这里会显示出您选择的修订版和当前版本之间的差别。
后一修订版 | 前一修订版 | ||
wiki:book:notes:android:第一行代码-android-第2版-郭霖:第2章 [2022/04/06 13:23] 博丽幻月 创建 |
wiki:book:notes:android:第一行代码-android-第2版-郭霖:第2章 [2022/04/06 14:07] (当前版本) 博丽幻月 [启动活动的最佳写法] |
||
---|---|---|---|
行 1: | 行 1: | ||
====== 第2章 先从看得到的入手——探究活动 ====== | ====== 第2章 先从看得到的入手——探究活动 ====== | ||
- | **活动Activity**\\ | + | ===== 活动Activity |
主要用于和用户进行交互。\\ | 主要用于和用户进行交互。\\ | ||
- | ---- | + | ===== 启动的主活动 |
- | **启动的主活动**\\ | + | |
在''< | 在''< | ||
<code xml> | <code xml> | ||
行 9: | 行 8: | ||
< | < | ||
</ | </ | ||
- | ---- | + | ===== 通知消息Toast |
- | **通知消息Toast**\\ | + | |
用途:将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,并且不会占用任何屏幕空间。\\ | 用途:将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,并且不会占用任何屏幕空间。\\ | ||
<code java> | <code java> | ||
行 23: | 行 21: | ||
可以通过'' | 可以通过'' | ||
'' | '' | ||
- | ---- | + | ===== 活动中使用Menu |
- | **活动中使用Menu**\\ | + | |
'' | '' | ||
- | ---- | + | ===== 销毁一个活动 |
- | **销毁一个活动**\\ | + | |
'' | '' | ||
- | ---- | + | ===== Intent交互 |
- | **Intent交互**\\ | + | |
Intent是Android程序中各组件之间**进行交互**的一种重要方式,它不仅可以指明当前组件**想要执行的动作**,还可以在不同组件之间**传递数据**。\\ | Intent是Android程序中各组件之间**进行交互**的一种重要方式,它不仅可以指明当前组件**想要执行的动作**,还可以在不同组件之间**传递数据**。\\ | ||
Intent一般可被用于**启动活动**、**启动服务**、**发送广播**等场景。\\ | Intent一般可被用于**启动活动**、**启动服务**、**发送广播**等场景。\\ | ||
Intent分两种:显示Intent、隐式Intent。\\ | Intent分两种:显示Intent、隐式Intent。\\ | ||
- | ---- | + | ===== 使用隐式Intent |
- | **使用隐式Intent**\\ | + | |
<code java> | <code java> | ||
intent.addCategory(" | intent.addCategory(" | ||
行 48: | 行 42: | ||
</ | </ | ||
</ | </ | ||
- | ---- | + | ===== 更多隐式Intent用法 |
- | **更多隐式Intent用法**\\ | + | |
不仅可以启动自己程序内的活动,还可以启动其他程序的活动。\\ | 不仅可以启动自己程序内的活动,还可以启动其他程序的活动。\\ | ||
<code java> | <code java> | ||
行 61: | 行 54: | ||
intent.setData(Uri.parse(" | intent.setData(Uri.parse(" | ||
</ | </ | ||
- | ---- | + | ===== 向下一个活动传递数据 |
- | **向下一个活动传递数据**\\ | + | |
使用'' | 使用'' | ||
<code java> | <code java> | ||
行 74: | 行 66: | ||
String data = intent.getStringExtra(" | String data = intent.getStringExtra(" | ||
</ | </ | ||
- | ---- | + | ===== 返回数据给上一个活动 |
- | **返回数据给上一个活动**\\ | + | |
FirstActivity按钮onClick()中添加:\\ | FirstActivity按钮onClick()中添加:\\ | ||
<code java> | <code java> | ||
行 104: | 行 95: | ||
</ | </ | ||
如果使用'' | 如果使用'' | ||
- | ---- | + | ===== 活动的生存期 ===== |
- | **TBD**\\ | + | |
+ | | ||
+ | | ||
+ | | ||
+ | - onStop(): 活动完全不可见时,和onPansu()区别:如果启动的新活动是一个对话框式的活动,onPanse()会执行,onStop()不会执行 | ||
+ | - onDestroy(): | ||
+ | - onRestart(): | ||
+ | ===== 活动被回收时数据的保存 ===== | ||
+ | '' | ||
+ | <code java> | ||
+ | // | ||
+ | @Override | ||
+ | protected void onSaveinstanceState(Bundle outstate) { | ||
+ | super.onSaveinstanceState(outState); | ||
+ | String tempData = " | ||
+ | outState.putString(" | ||
+ | } | ||
+ | </ | ||
+ | <code java> | ||
+ | // | ||
+ | @Override | ||
+ | protected void onCreate(Bundle savedinstanceState) { | ||
+ | ... | ||
+ | if (savedinstanceState != null) { | ||
+ | String tempData = savedinstanceState.getString(" | ||
+ | Log.d(TAG, tempData); | ||
+ | } | ||
+ | ... | ||
+ | } | ||
+ | </ | ||
+ | ===== 活动的启动模式 ===== | ||
+ | 启动模式4种:stantdard、singleTop、singleTask、singleInstance。\\ | ||
+ | 可以在'' | ||
+ | standard是活动默认的启动方式。\\ | ||
+ | ===== 知晓当前是在哪一个活动 ===== | ||
+ | '' | ||
+ | ===== 随时随地退出程序 ===== | ||
+ | <code java> | ||
+ | android.os.Process.killProcess(android.os.Process.myPid()); | ||
+ | </ | ||
+ | '' | ||
+ | ===== 启动活动的最佳写法 ===== | ||
+ | 在要启动的活动中添加:\\ | ||
+ | <code java> | ||
+ | public static void actionStart(Context context, String data1, String data2) { | ||
+ | Intent intent = new Intent(context, | ||
+ | intent.putExtra(" | ||
+ | intent.putExtra(" | ||
+ | context.startActivity(intent); | ||
+ | } | ||
+ | </ | ||
+ | 然后通过下面代码启动:\\ | ||
+ | <code java> | ||
+ | SecondActivity.actionStart(FirstActivity.this, | ||
+ | </ |