Android基础之Activity四种启动模式
来源:互联网 发布:2016淘宝客微信教程 编辑:程序博客网 时间:2024/05/22 05:04
1 启动模式介绍
启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置;
启动模式有4种,分别为standard、singleTop、singleTask、singleInstance;
2 具体介绍每一个启动模式。
(1)standard
若我意图打开的顺序为B1->B2->B2,则实际打开的顺序为B1->B2->B2
(2)singleTop
若我意图打开的顺序为:B1->B2->B2,则实际打开的顺序为:B1->B2(后一次意图打开B2,实际只调用了前一个的onNewIntent方法)
若我意图打开的顺序为:B1->B2->B1->B2,则实际打开的顺序为:B1->B2->B1->B2。
(3)singleTask
singleTask:如果要激活的那个Activity在任务栈中存在该实例,则不需要创建,只需要把此Activity放入栈顶,并把该Activity以上的Activity实例都pop(onDestroy())
若我的应用程序中有三个Activity,C1,C2,C3,三个Activity可互相启动,其中C2为singleTask模式,如下:
操作:(1)C1->C2 (2) C1->C2->C3 (3) C1->C2->C3->C2 (4)C1->C2->C3->C2->C3->C1 (5) C1->C2->C3->C2->C3->C1-C2
实际:(1)C1->C2 (2) C1->C2->C3 (3)C1->C2 (4) C1->C2->C3->C1 (5) C1->C2
(4)singleInstance
想象以下场景,假设我们的程序中有一个活动是允许其他程序调用的,如果我们想实现其他程序和我们的程序可以共享这个活动的实例,应该如何实现呢?
可看,SecondActivity的Task id不同于FirstActivity和ThirdActivity。这说明SecondActivity确实是存放在一个单独的返回栈里的,而且这个栈中只有SecondActivity这一个活动。
按下Back键进行返回,发现ThirdActivity竟然直接返回到了FirstActivity,再按下Back键又会返回到SecondActivity,再按下Back键才会退出程序,这是为什么呢?
由于FirstActivity和ThirdActivity是存放在同一个返回栈里的,当在ThirdActivity的界面按下Back键,ThirdActivity会从返回栈中出栈,那么FirstActivity就成为了栈顶活动显示在界面上,因此也就出现了从ThirdActivity直接返回到FirstActivity的情况。然后在FirstActivity界面再次按下Back键,这时当前的返回栈已经空了,于是就显示了另一个返回栈的栈顶活动,即SecondActivity。最后再次按下Back键,这时所有返回栈都已经空了,也就自然退出了程序。
3 使用场景
(1)standard
普通模式:若我有一个Activity名为A1, 上面有一个按钮可跳转到A1。那么如果我点击按钮,便会新启一个Activity A1叠在刚才的A1之上,再点击又会再新启一个在它之上……。点back键会依照栈顺序依次退出。
(2)singleTop
singleTop适合接收通知启动的内容显示页面(从外界可能多次跳转到一个界面)。例如,某个新闻客户端的新闻内容页面,如果收到10个新闻推送,每次激活同一个新闻内容页面,返回时立刻返回前一个页面。
(3)singleTask
singleTask适合作为程序入口点。例如浏览器的主界面。不管从多少个应用启动浏览器,只会启动主界面一次,其余情况都会走onNewIntent,并且会清空主界面上面的其他页面。即是:之前打开过的页面,打开之前的页面就ok,不再新建。
(4)singleInstance
singleInstance适合需要与程序分离开的页面。例如闹铃提醒,将闹铃提醒与闹铃设置分离。singleInstance不要用于中间页面,如果用于中间页面,跳转会有问题,比如:A -> B (singleInstance) -> C,完全退出后,在此启动,首先打开的是B。
另一个例子:某个应用中用到了百度地图,当退出该应用的时候,进入百度地图,百度地图还是显示刚才的界面。
- 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的四种启动模式
- 【暑假测试3】C HDU 5327 Olympiad
- UI 03 关于UITextField键盘遮挡问题
- 字典序排列的算法
- 学习C++11之引用
- HTTP中POST与GET 区别介绍
- Android基础之Activity四种启动模式
- Contiki例(三)使用etimer定时器激活被阻塞的任务
- ROS学习--(十三)编写简单的订阅器(subscriber),编译,测试
- AngularJs学习笔记__3、AngularJs模板
- centos 6实现ssh无密码登录的简便方法
- UITableView Cell
- 【C++】sizeof
- 黑马程序员——SQL四种连接查询及实例
- 【背包总结I】