十年生死两茫茫,不思量,自难忘。 ——苏轼《江城子·乙卯正月二十日夜记梦》
任务栈
栈:先进先出
队列:先进先出
打开一个Activity叫进栈,关闭一个Activity叫出栈
我们操作的Activity永远是栈顶的Activity
任务栈是用来维护用户体验的
应用程序退出了,任务栈则会清空
一般情况下一个应用程序对应一个任务栈
<activity android:name=".MainActivity"
android:launchMode="singleInstance">
</activity>
standrand启动模式
默认模式,每开启一个activity,在任务栈中就进栈一个实例,进栈几个,出栈几个
当两个activity的启动模式都是standrand时
点击open1,open2,open1,open2,返回四次,退出应用程序.
SingleTop启动模式
任务栈会检查栈顶的activity,已经打开后,会复用已经在栈顶的实例.
当第二个activity是singletop模式
多次点击第二个activity时,退出只算一次
SingleTask启动模式
每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。
SingleInstance启动模式
会单独开一个任务栈,也是为了节约内存,哪个显示页面在前,任务栈就在队列前
启动活动的最佳写法
自己可以定义一个BaseActivity,里面写一些所以activity的特性,也可以用来管理activity的生命周期
public class SecondActivity extends BaseActivity {
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);
}
……
}
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
SecondActivity.actionStart(FirstActivity.this, "data1", "data2");
}
});