Activity之任务栈&启动模式
来源:互联网 发布:linux 类似telnet 编辑:程序博客网 时间:2024/05/18 02:21
Activity之任务栈
1.一个应用程序一般都是由多个Activity组成的。
2.任务栈(task stack,别名:back stack后退栈:按后退键就是关闭当前的Activity,相当于把任务栈的栈顶元素给移出)的作用:记录存放用户开启的Activity的先后顺序。
3.一个应用程序一被开启,系统就给他分配一个任务栈,当所有的Activity都退出的时候,任务栈就清空了。
4.任务栈的id是一个integer的数据类型,是自增长的。getTaskId()方法返回的是当前Activity所在任务栈的id。
5.在Android操作系统里面,会存在多个任务栈,一个应用程序对应一个任务栈。
6.桌面应用和一般的应用程序是一样的,任务栈的行为也是一样。
7.默认情况下,关闭掉一个应用程序,清空了这个应用程序的任务栈,应用程序的进程还会保留。
为什么要引入任务栈的概念:
windows下可以通过点击任务栏切换任务
Android下长按home键切换任务
为了记录用户开启了哪些Activity,记录这些Activity开启的先后顺序,Google引入任务栈概念,帮助维护好的用户体验。
栈顶的Activity始终都是用户正在操作的Activity。
桌面应用把返回键的功能给屏蔽了。只需要重写onBackPressed()方法,不让它实现父类里的方法即可,即:重写为空方法。
Activity的启动模式
启动模式也是在清单文件的activity节点下配置的:
android:launchMode="singleTop"
1.standard
默认标准的启动模式,每次startActivity都是创建一个新的Activity的实例。适用于绝大多数情况。
2.singleTop
单一顶部,如果要开启的Activity在任务栈的顶部已经存在,就不会创建新的实例,而是调用 onNewIntent() 方法。
应用场景:浏览器书签(流氓程序员写个for循环,多次弹出是否保存该书签,若该Activity的启动模式设置为singleTop就可避免该现象。)。避免栈顶的Activity被重复的创建,解决用户体验问题。
3.singletask
单一任务栈,Activity只会在任务栈里面存在一个实例。如果要激活的Activity在任务栈里面已经存在,就不会创建新的Activity,而是调用 onNewIntent() 方法复用这个已经存在的Activity,并且清空当前Activity任务栈上面所有的Activity。
应用场景:浏览器Activity,整个任务栈只有一个实例,节约内存和CPU的目的。
注意:Activity还是运行在当前应用程序的任务栈里面,不会创建新的任务栈。
4.singleInstance
单一实例,整个手机操作系统里面只有一个实例存在。
不同的应用去打开这个Activity,共享、公用同一个Activity。
它会运行在自己单独、独立的任务栈里面,并且任务栈里面只有它一个实例存在。每个Activity都有自己独立的任务栈。
应用场景:呼叫来电界面,InCallScreen
- Activity之任务栈&启动模式
- Activity启动模式&任务栈
- 任务栈&activity启动模式
- 任务栈、activity启动模式
- Activity任务栈和Activity启动模式
- Activity任务栈和启动模式
- Activity任务栈和启动模式
- Activity启动模式和任务栈(2)
- 任务栈 和 Activity的启动模式
- 2.Activity生命周期、任务栈、启动模式
- Activity 启动模式及任务栈管理
- activity的启动模式和任务栈
- Activity启动模式与任务栈(Task)
- Activity生命周期,任务栈和启动模式
- Activity任务栈与启动模式
- Activity启动模式及任务栈
- task(任务栈)、Activity启动模式详解
- Activity任务栈和启动模式
- HDU4952-Number Transformation
- OC 面试题1
- C#使用XmlWriter写入XML文件
- TextView设置个别字体样式
- std::vector介绍
- Activity之任务栈&启动模式
- 原命题组组长王式安谈数学命题规律
- NYOJ 12 喷水装置(2)贪心之区间覆盖问题
- Python Function Defination
- HDOJ 4950 Monster
- poj 3461 Oulipo(KMP模板题)
- Android Afinal框架学习(一) FinalDb 数据库操作
- 【学生信息管理系统】EOF 和 BOF
- 测试用例的设计