知识库

wiki.linsakura.com

用户工具

站点工具


wiki:book:notes:android:第一行代码-android-第2版-郭霖:第2章

差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

后一修订版
前一修订版
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 =====
 主要用于和用户进行交互。\\ 主要用于和用户进行交互。\\
----- +===== 启动的主活动 =====
-**启动的主活动**\\+
 在''<activity>''标签的内部加入''<intent-filter>''标签,添加下面两句声明即可:\\ 在''<activity>''标签的内部加入''<intent-filter>''标签,添加下面两句声明即可:\\
 <code xml> <code xml>
行 9: 行 8:
 <category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
 </code> </code>
----- +===== 通知消息Toast =====
-**通知消息Toast**\\+
 用途:将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,并且不会占用任何屏幕空间。\\ 用途:将一些短小的信息通知给用户,这些信息会在一段时间后自动消失,并且不会占用任何屏幕空间。\\
 <code java> <code java>
行 23: 行 21:
 可以通过''findViewById()''获取布局文件中定义的元素。\\ 可以通过''findViewById()''获取布局文件中定义的元素。\\
 ''setOnClicklistener()''方法为按钮注册一个监听器,点击按钮时就会执行监听器中的''onClick()''方法。\\ ''setOnClicklistener()''方法为按钮注册一个监听器,点击按钮时就会执行监听器中的''onClick()''方法。\\
----- +===== 活动中使用Menu =====
-**活动中使用Menu**\\+
 ''getMenuinflater()''方法能够得到''Menuinflater''对象,再调用它的''inflate()''方法就可以给当前活动创建菜单。\\ ''getMenuinflater()''方法能够得到''Menuinflater''对象,再调用它的''inflate()''方法就可以给当前活动创建菜单。\\
----- +===== 销毁一个活动 =====
-**销毁一个活动**\\+
 ''finish()''\\ ''finish()''\\
----- +===== Intent交互 =====
-**Intent交互**\\+
 Intent是Android程序中各组件之间**进行交互**的一种重要方式,它不仅可以指明当前组件**想要执行的动作**,还可以在不同组件之间**传递数据**。\\ Intent是Android程序中各组件之间**进行交互**的一种重要方式,它不仅可以指明当前组件**想要执行的动作**,还可以在不同组件之间**传递数据**。\\
 Intent一般可被用于**启动活动**、**启动服务**、**发送广播**等场景。\\ Intent一般可被用于**启动活动**、**启动服务**、**发送广播**等场景。\\
 Intent分两种:显示Intent、隐式Intent。\\ Intent分两种:显示Intent、隐式Intent。\\
----- +===== 使用隐式Intent =====
-**使用隐式Intent**\\+
 <code java> <code java>
 intent.addCategory("com.exampte.activitytest.MY_CATEGORY"); intent.addCategory("com.exampte.activitytest.MY_CATEGORY");
行 48: 行 42:
 </activity> </activity>
 </code> </code>
----- +===== 更多隐式Intent用法 =====
-**更多隐式Intent用法**\\+
 不仅可以启动自己程序内的活动,还可以启动其他程序的活动。\\ 不仅可以启动自己程序内的活动,还可以启动其他程序的活动。\\
 <code java> <code java>
行 61: 行 54:
 intent.setData(Uri.parse("tel:18886")); intent.setData(Uri.parse("tel:18886"));
 </code> </code>
----- +===== 向下一个活动传递数据 =====
-**向下一个活动传递数据**\\+
 使用''putExtra()''存放数据到intent:\\ 使用''putExtra()''存放数据到intent:\\
 <code java> <code java>
行 74: 行 66:
 String data = intent.getStringExtra("extra_data"); String data = intent.getStringExtra("extra_data");
 </code> </code>
----- +===== 返回数据给上一个活动 =====
-**返回数据给上一个活动**\\+
 FirstActivity按钮onClick()中添加:\\ FirstActivity按钮onClick()中添加:\\
 <code java> <code java>
行 104: 行 95:
 </code> </code>
 如果使用''Back键''回到FirstActivity,则重写SecondActivity中的''onBackPressed()''方法即可。\\ 如果使用''Back键''回到FirstActivity,则重写SecondActivity中的''onBackPressed()''方法即可。\\
----- +===== 活动的生存期 ===== 
-**TBD**\\+  onCreate(): 第一次被创建,初始化操作 
 +  onStart(): 不可见变为可见 
 +  onResume(): 在活动准备号和用户进行交互的时候调用 
 +  onPanse(): 启动或恢复另一个活动时 
 +  - onStop(): 活动完全不可见时,和onPansu()区别:如果启动的新活动是一个对话框式的活动,onPanse()会执行,onStop()不会执行 
 +  - onDestroy(): 被销毁之前 
 +  - onRestart(): 停止状态变为运行状态前调用 
 +===== 活动被回收时数据的保存 ===== 
 +''onSaveinstanceState()''回调方法,这个方法可以保证在活动被回收之前一定会被调。 
 +<code java> 
 +//在MainActivity中添加以下代码,可以将临时数据进行保存: 
 +@Override 
 +protected void onSaveinstanceState(Bundle outstate) { 
 +    super.onSaveinstanceState(outState); 
 +    String tempData = "Something you just typed"; 
 +    outState.putString("data_key", tempData); 
 +
 +</code> 
 +<code java> 
 +//修改MainActivity的onCreate()中添加如下代码,进行数据恢复 
 +@Override 
 +protected void onCreate(Bundle savedinstanceState) { 
 +    ... 
 +    if (savedinstanceState != null) { 
 +        String tempData = savedinstanceState.getString("data_key"); 
 +        Log.d(TAG, tempData); 
 +    } 
 +    ... 
 +
 +</code> 
 +===== 活动的启动模式 ===== 
 +启动模式4种:stantdard、singleTop、singleTask、singleInstance。\\ 
 +可以在''AndroidManifest.xml''中通过给''<activity>''标签指定''android:launchMode''属性来选择启动模式。\\ 
 +standard是活动默认的启动方式。\\ 
 +===== 知晓当前是在哪一个活动 ===== 
 +''getClass().getSimpleName()''\\ 
 +===== 随时随地退出程序 ===== 
 +<code java> 
 +android.os.Process.killProcess(android.os.Process.myPid()); 
 +</code> 
 +''killProcess()''方法只能用于杀掉当前程序的进程。\\ 
 +===== 启动活动的最佳写法 ===== 
 +在要启动的活动中添加:\\ 
 +<code java> 
 +public static void actionStart(Context context, String data1, String data2) { 
 +    Intent intent = new Intent(context, SecondActivity.class); 
 +    intent.putExtra("param1", data1); 
 +    intent.putExtra("param2", data2); 
 +    context.startActivity(intent); 
 +
 +</code> 
 +然后通过下面代码启动:\\ 
 +<code java> 
 +SecondActivity.actionStart(FirstActivity.this, "data1", "data2"); 
 +</code>
wiki/book/notes/android/第一行代码-android-第2版-郭霖/第2章.1649222622.txt.gz · 最后更改: 2022/04/06 13:23 由 博丽幻月