Android中Activity启动模式详解
来源:互联网 发布:海豚加速器for mac 编辑:程序博客网 时间:2024/05/29 12:23
在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作。在Android中Activity的启动模式决定了Activity的启动运行方式。
Android总Activity的启动模式分为四种:
Activity启动模式设置: <activity android:name=".MainActivity" android:launchMode="standard" />Activity的四种启动模式: 1. standard 模式启动模式,每次激活Activity时都会创建Activity,并放入任务栈中。 2. singleTop 如果在任务的栈顶正好存在该Activity的实例, 就重用该实例,否者就会创建新的实例并放入栈顶(即使栈中已经存在该Activity实例,只要不在栈顶,都会创建实例)。 3. singleTask 如果在栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。 4. singleInstance 在一个新栈中创建该Activity实例,并让多个应用共享改栈中的该Activity实例。一旦改模式的Activity的实例存在于某个栈中,任何应用再激活改Activity时都会重用该栈中的实例,其效果相当于多个应用程序共享一个应用,不管谁激活该Activity都会进入同一个应用中。
其中standard是系统默认的启动模式。
下面通过实例来演示standard的运行机制:
1 private TextView text_show; 2 private Button btn_mode; 3 4 @Override 5 public void onCreate(Bundle savedInstanceState) { 6 super.onCreate(savedInstanceState); 7 setContentView(R.layout.activity_main); 8 9 text_show = (TextView) this.findViewById(R.id.text_show);10 11 text_show.setText(this.toString());12 13 btn_mode = (Button) this.findViewById(R.id.btn_mode);14 15 }16
//按钮单击事件17 public void LaunchStandard(View v){18 startActivity(new Intent(this,MainActivity.class));19 20 text_show.setText(this.toString());21 }
初始化界面如下:
当点击按钮时,会创建新的Activity,通过TextView@后16进制数的显示即可看出,点击两次分别界面如下:
此时,我们分析栈内部的运行机制:
- Android中Activity启动模式详解
- Android中Activity启动模式详解
- Android中Activity启动模式详解
- Android中Activity启动模式详解
- Android中Activity启动模式详解
- Android中Activity启动模式详解
- Android中Activity启动模式详解
- Android中Activity启动模式详解
- Android中Activity启动模式详解
- Android中Activity启动模式详解
- Android中Activity启动模式详解
- Android中Activity启动模式详解
- Android中Activity启动模式详解
- Android中Activity启动模式详解
- Android中Activity启动模式详解
- Android中Activity启动模式详解
- Android中Activity启动模式详解
- Android中Activity启动模式详解
- 从开源时代进入到逆向时代
- 搜索神器
- sizeof(即类型大小)详解-转自http://veryti.com/question/443
- 变量在内存中的位置
- UVa 11479 - Is this the easiest problem?
- Android中Activity启动模式详解
- 大话数据结构八:队列的顺序存储结构(循环队列)
- Python 读写图片
- 深入探索 boost::lambda 系列 (一)
- 企业技术/数据架构想法---逻辑图模型
- Android实现网络多线程断点续传下载
- Linux进程间通信之管道(pipe)、命名管道(FIFO)与信号(Signal)
- 互联网系统架构的演进
- unable to load default svn client myeclipse 安装svn