这里会显示出您选择的修订版和当前版本之间的差别。
| 后一修订版 | 前一修订版 | ||
|
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, | ||
| + | </ | ||