从零开始学Android(六)
来源:互联网 发布:上海行知实验幼儿园 编辑:程序博客网 时间:2024/05/15 23:50
活动的启动模式
启动模式一共四种,分别是standard, singleTop, singleTask, singleInstance。可以通过在ActivityManifest.XML文件中的标签中的android:launchMode属性选择启动模式。
- standard
这是活动默认的启动模式,在不进行显式指定的情况下,所有活动都会自动使用这种启动模式,在这种模式下,每当启动一个新的活动,他都会在返回栈中入栈并处于栈顶位置。对于使用standard模式启动的活动,系统不在乎这个活动是否已经在返回栈中存在,每次启动都会创建一个新的实例。
我们通过ActivityTest项目来对其进行测试:
在FirstActivity的onCreate方法中修改代码:
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d("FirstActivity", this.toString()); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.first_layout); Button button1 = (Button) findViewById(R.id.button_1); button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(FirstActivity.this, FirstActivity.class); startActivity(intent); } }); }
由打印信息可以看出,每点一次按钮就会创建一个新的FirstActivity实例,因此想要返回也需要点三次Back键。
- singleTop
将启动模式指定为singleTop模式,则启动活动时如果发现返回栈的栈顶已经是该活动,则认为直接使用它而非创建新的活动实例。
修改ActivityManifest.XML文件的FirstActivity启动模式:
<activity android:name=".FirstActivity" android:label="This is FirstActivity" android:launchMode="singleTop" >
- singleTask
singleTask整个应用程序的上下文只有一个实例。
每次启动活动的时候系统会在返回栈中检查是否存在该活动的实例,如果已经存在实例,则将直接使用该实例,并把在这个活动之上的所有活动出栈,如果没有发现就会创建一个新的实例。同样修改XML:
android:name=".FirstActivity" android:label="This is FirstActivity" android:launchMode="singleTask" >
然后在FirstActivity中添加onRestart方法:
@Override protected void onRestart() { super.onRestart(); Log.d("FirstActivity", "onRestart"); }
并在SecondActivity中添加onDestroy方法:
@Override protected void onDestroy() { super.onDestroy(); Log.d("SecondActivity", "onDestroy"); }
- singleInstance
不同于以上三种启动模式,singleInstance启动模式有一个单独的返回栈来管理这个活动。不管是哪个应用程序来访问这个活动,都有一个共同的返回栈,也就解决了共享活动实例的问题。、
0 0
- 从零开始学Android(六)
- 从零开始学Makefile(六)
- 从零开始学HTML(六)--HTML 段落
- 【从零开始学NGUI 】 (六)CheckBox
- 从零开始学java(六)运算符
- 从零开始学Android (1)
- 从零开始学Android (2)
- 从零开始学Android (3)
- 从零开始学Android (4)
- 从零开始学Android(〇)
- 从零开始学Android(一)
- 从零开始学Android(二)
- 从零开始学Android(三)
- 从零开始学Android(四)
- 从零开始学Android(五)
- 从零开始学Android(七)
- 从零开始学Android(八)
- 从零开始学Android(九)
- 【杭电1856】More is better找最大集合
- HDU4707Pet(并查集)
- 一种高效率的排序方法-归并排序的实现(主要解决matlab中多维数组排序的问题)
- HDU 5763 Another Meaning 多校赛 (DP + KMP)
- C++STL常见面试题
- 从零开始学Android(六)
- 三种将list转换为map的方法
- Python的函数参数传递
- 组合模式(一)
- 基本完成公司网页与python pexpect的学习
- CSS3内容处理插入图片
- SQL Server 基本SQL用法
- Android IPC通信
- 面试笔试题刷题总结 不断更新中。。。。。。