Activity及其生命周期
1、传递一般数据的核心代码:
Intent intent = new Intent(MainActivity.this, NextActivity.class);
Bundle bundle = new Bundle();
bundle.putString("myname", "hehaitao");
bundle.putInt("age", 16);
intent.putExtras(bundle);
startActivity(intent);
(2)、NextActivity页面:
// 接收第一个页面的传值
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String name = bundle.getString("myname");
int age = bundle.getInt("age");
this.setTitle(name + ":" + age);
}
2、传递对象数据的核心代码:
Bundle bundle = new Bundle();
bundle.putSerializable("person", person);
intent.putExtras(bundle);
startActivity(intent);
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
// 接收Serializable对象
Person data = (Person) bundle.getSerializable("person");
三、Activity生命周期:
1、Activity一生中有七种不同的状态。
- onCreate()
- onStart()
- onResume()
- onPause()
- onStop()
- onRestart()
- onDestroy()
A、七个生命周期组合:
- onCreate、onStart、onResume:启动应用程序
- onPause、onStop:失去焦点
- onRestart、onStart、onResume:重新获得焦点
- onPause、onStop、onDestroy :退出应用程序
B、七个生命周期按阶段划分:
- onCreate() --- onDestroy() 完整生命周期 The entire lifetime
- onStart() --- onStop() 可见生命周期 The visible lifetime:
- onResume() --- onPause() 前沿生命周期(焦点生命周期) The foreground lifetime:
四、任务与回退栈:
(一)、任务Task:
1、概念:
一个任务(task)就是在执行某项工作时与用户进行交互的Activity的集合。这些Activity按照被打开的顺序依次被安排在一个堆栈中(回退栈)。
(二)、回退栈:
1、概念:
在当前的Activity启动了另一个Activity时,这个新的Activity被放到了堆栈的顶部,并且带有焦点。前一个Activity并没有消失,而是保存在回退栈中,此时它处于停止状态。
(三)、Activity和Task的默认行为的总结:
1、当Activity A启动Activity B时,ActivityA被终止,但是系统保留了它的状态(如滚动条的位置和录入表单的文本)。如果用户在Activity B中按回退按钮,Activity A会使用被保存的状态来进行恢复。
2、当用户通过按主页(Home)按钮离开一个任务时,当前的Activity会被终止,并且被放入后台。系统会保留任务中每个Activity的状态。如果用户随后通过选择启动图标来恢复这个任务,那么任务会来到前台,并且恢复了堆栈顶部的Activity。
五、Activity启动模式
(一)、Activity启动模式设置:
<activity android:name=".MainActivity" android:launchMode="standard" />
(二)、Activity的四种启动模式:
1. standard 点一个创建一个。每个窗的getTaskId()保持不变,但是this.hashCode()发生改变。
2. singleTop activity 压着创建新的,若A被别的窗体压着,则创建
3. singleTask 被压住就创建新的并销毁旧的 onNewIntent()
4. singleInstance每次跳转都创建新的回退栈