Activity四种启动方式
2015-06-24 20:17
357 查看
启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置;
启动模式有4种,分别为standard、singleTop、singleTask、singleInstance;
讲解启动模式之前,有必要先讲解一下“任务栈”的概念;
任务栈:每个应用都有一个任务栈,是用来存放Activity的,功能类似于函数调用的栈,先后顺序代表了Activity的出现顺序;比如Activity1–>Activity2–>Activity3,则任务栈为:
启动模式
(1)standard:每次激活Activity时(startActivity),都创建Activity实例,并放入任务栈;
(2)singleTop:如果某个Activity自己激活自己,即任务栈栈顶就是该Activity,则不需要创建,其余情况都要创建Activity实例;
(3)singleTask:如果要激活的那个Activity在任务栈中存在该实例,则不需要创建,只需要把此Activity放入栈顶,并把该Activity以上的Activity实例都pop;
(4)singleInstance:如果应用1的任务栈中创建了MainActivity实例,如果应用2也要激活MainActivity,则不需要创建,两应用共享该Activity实例;
SingTask的应用: 可以用来退出整个应用。将主Activity设为SingTask模式,然后在要退出的Activity中转到主Activity,然后重写主Activity的onNewIntent函数,并在函数中加上一句finish。
退出单个Activity方法:
1.调用finish
2.杀死该进程:killprocess(Process.mId)
3. 终止正在运行的虚拟机:system.exit()
退出整个应用:
1.制造抛异常导致整个程序退出
2.将所有的activity放入到一个list中,然后在需要退出的时候,将所有的activity,finish掉
启动模式有4种,分别为standard、singleTop、singleTask、singleInstance;
讲解启动模式之前,有必要先讲解一下“任务栈”的概念;
任务栈:每个应用都有一个任务栈,是用来存放Activity的,功能类似于函数调用的栈,先后顺序代表了Activity的出现顺序;比如Activity1–>Activity2–>Activity3,则任务栈为:
启动模式
(1)standard:每次激活Activity时(startActivity),都创建Activity实例,并放入任务栈;
(2)singleTop:如果某个Activity自己激活自己,即任务栈栈顶就是该Activity,则不需要创建,其余情况都要创建Activity实例;
(3)singleTask:如果要激活的那个Activity在任务栈中存在该实例,则不需要创建,只需要把此Activity放入栈顶,并把该Activity以上的Activity实例都pop;
(4)singleInstance:如果应用1的任务栈中创建了MainActivity实例,如果应用2也要激活MainActivity,则不需要创建,两应用共享该Activity实例;
SingTask的应用: 可以用来退出整个应用。将主Activity设为SingTask模式,然后在要退出的Activity中转到主Activity,然后重写主Activity的onNewIntent函数,并在函数中加上一句finish。
退出单个Activity方法:
1.调用finish
2.杀死该进程:killprocess(Process.mId)
3. 终止正在运行的虚拟机:system.exit()
退出整个应用:
1.制造抛异常导致整个程序退出
2.将所有的activity放入到一个list中,然后在需要退出的时候,将所有的activity,finish掉
相关文章推荐
- 100 个最佳 Ubuntu 应用(中)
- 在 AppImage、Flathub 和 Snapcraft 平台上搜索 Linux 应用
- 架构纵横谈之二 ---- 架构的模式与要点
- 24 个必备的 Linux 应用程序
- 注册表趣味应用小集
- 远程控制技术的应用
- 路由器启动的顺序
- 路由器访问列表的应用
- xDSL技术及其应用
- PostgreSQL教程(二):模式Schema详解
- 代理区独立模式的说明
- 基于XML的桌面应用
- SQL Server 2008 R2 应用及多服务器管理
- 免安转MySQL服务的启动与停止方法
- C#中的递归APS和CPS模式详解
- C#迭代器模式(Iterator Pattern)实例教程
- C#观察者模式(Observer Pattern)实例教程
- C#单例模式(Singleton Pattern)实例教程
- Erlang中的模块与模式匹配介绍
- VC++实现程序开机启动运行的方法