android学习笔记(4)

来源:互联网 发布:淘宝客网站推广技巧 编辑:程序博客网 时间:2024/06/16 11:28

Android 中 Activity 启动模式

Activity有四种启动模式:standard(默认), singleTop, singleTask和 singleInstance。

默认是standard,类似栈,先入后出。

参考资料 :http://www.cnblogs.com/meizixiong/archive/2013/07/03/3170591.html

可以测试下同一activity的变化

首先,默认为

standard


每次激活Activity时(startActivity),都创建Activity实例,并放入任务栈;

private TextView tv;@Overrideprotected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_main);    tv= (TextView) findViewById(R.id.tv);    tv.setText(String.format("Task:%d\n Current:%s",getTaskId(),toString()));    findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {        @Override        public void onClick(View v) {//从当前activity跳转到MainActivity            startActivity(new Intent(MainActivity.this,MainActivity.class));        }    });}



不断按button可以发现task没有发生改变,而地址不断改变

startActivity(new Intent(MainActivity.this,Main2Activity.class));
修改代码,让其在两个activity之间不断跳转
结果和上一结果一样,
singleTop
如果某个Activity自己激活自己,即任务栈栈顶就是该Activity,则不需要创建,其余情况都要创建Activity实例;
在配置文件中修改启动模式
<activity android:name=".MainActivity"    android:launchMode="singleTop">
然后重复之前的动作
同一activity之间不会变化
而且会发现后腿的时候,会直接出去
如果有两个activity,跳转其他activity时会改变地址
singleTask
如果要激活的那个Activity在任务栈中存在该实例,则不需要创建,只需要把此Activity放入栈顶,并把该Activity以上的Activity实例都pop;
可以清楚的看到1没变
因为先开的1
当开到2时,1还在栈里面,这个时候如果打开1会把2弹出,而且1退出就可以直接出去,从2按后退可以回到1.
singleInstance
如果应用1的任务栈中创建了MainActivity实例,如果应用2也要激活MainActivity,则不需要创建,两应用共享该Activity实例;
两个activity不公用同一个栈,不按退出的话栈并不会清空
栈里只会存一个实例
不管从哪都要两步才能退出,而且当你退出一个栈之后,重新到另一个栈,你可以看到地址变了

1 0
原创粉丝点击