Activity 启动模式
来源:互联网 发布:淘宝搜索热词排名 编辑:程序博客网 时间:2024/06/05 18:19
Android Activity 启动模式分为4中:standard、singleTop、singleTask、singleInstance。在清单配置文件AndroidManifest.xml中设置activity标签中的android:launchMode可以选择启动的模式。
1.standard
默认启动模式。如果没有指定启动模式,系统会自动选择这种模式。这种模式的特点就是每次启动都会创建该活动的一个新的实例。
创建一个名为launchmode的工程。在StandardActivity的oncreate函数中加入以下代码
Log.i("info", this.toString()); Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(MainActivity.this, MainActivity.class); startActivity(intent); } });
启动项目 点击按钮查看logcat的输出信息。
每点击一次按钮,程序就会创建一个新的实例。要点击3次退出按钮才能退出程序。
2.singleTop
在这种模式下就很好的处理第一种模式的资源浪费。只要该活动在活动栈的栈顶,它是不会重新创建的。当活动不处于栈顶时,才会重新创建。
新建活动SingleTopActivity和OtherActivity。在清单配置文件中设置启动模式为singleTop。在SingleTopActivity添加2个按钮,一个按钮用于启动自己,另一个启动其他活动。具体代码如下:
Button button = (Button) findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Log.i("info", SingleTopActivity.this.toString()); Intent intent = new Intent(SingleTopActivity.this, SingleTopActivity.class); startActivity(intent); } }); Button button1 = (Button) findViewById(R.id.button1); button1.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Log.i("info", SingleTopActivity.this.toString()); Intent intent = new Intent(SingleTopActivity.this, OtherActivity.class); startActivity(intent); } });
启动程序 运行结果如下:
可以看出多次点击启动自己的时候,如果该活动在栈的顶部。该活动是不会重新创建的。
3.singleTask
既然singleTop已经处理好了重复创建的问题,为什么还要有singleTask的启动模式呢。singleTop是有条件,如果该活动不在栈顶还是会重新创建活动。为什么在一个程序中不直接启用一个活动,不管它在栈的那个位置。显示这是可行的,用singleTask就能实现这个效果。
创建SingleTaskActivity活动,设置启动模式为signletask。运行程序,查看结果:
这里SingleTaskActivity和OtherActivity就是一个明显的对比。不管启动多少次。SingleTaskActivity都只创建了一次,但是OtherActivity就不一样创建了多次。
4.singleInstance
singleInstance有点难理解。如果一个活动指定为singleInstance的时候,就会创建一个新的栈来保存这个活动。
先看实例。新建3个活动FirstActivity.SecondActivity.ThirdActivity.每个活动都设置一个按钮。活动一启动活动二。活动二启动活动三。活动三启动活动一。活动二设置为singleInstance模式。打印出他们的栈的id。结果如下:
可以看到不管怎么启动。活动二的栈id都和一、三不同。已经是说活动二在另外一个任务栈中。假如你现在要清理某个栈,但是其中有一个Activity是不能被清理,就可以使用这种模式。
本文的例子在http://download.csdn.net/detail/u014523456/9554696。
个人理解能力有限,本文如有错误,或者需要修改的地方,请留言。
- android Activity启动模式
- Android Activity启动模式
- activity启动模式详解
- Activity启动模式1
- activity的启动模式
- Activity有四种启动模式
- Activity启动模式
- activity启动模式分析
- Activity的启动模式
- Activity 启动模式
- Activity启动模式
- Activity的启动模式
- Activity 启动模式
- Activity启动模式总结
- Activity的启动模式
- Activity的启动模式
- Activity 启动模式
- Activity启动模式
- Python模块学习——re
- tensorflow从0开始(6)——保存加载模型
- 欢迎使用CSDN-markdown编辑器
- 【通信技术】计算机通信技术复习习题
- 嵌入式LAB 4:Bootloder
- Activity 启动模式
- OVS操作总结
- VS 中的C4996错误解决办法
- VRRP协议详解-----(2)
- 深入浅出Mybatis系列(六)---objectFactory、plugins、mappers简介与配置
- (位运算符)请自己实现两个整数变量的交换 ^的特点 (面试题)
- 设计模式应用举例(2)
- BZOJ2801: [Poi2012]Minimalist Security
- 连接Oracle数据库各链接串