任务和返回栈
来源:互联网 发布:vm虚拟机安装mac dmg 编辑:程序博客网 时间:2024/04/29 22:24
打开一个最近未使用过的APP时,系统会创建一个新的任务(它是一个后进先出的栈),把APP的主Activity放入其中。默认模式下,后续启动的获得用户焦点的Activity会堆叠在栈顶。当用户按下返回键时,栈顶的Activity会被弹出销毁,并返回前一个Activity(此时为新的栈顶)。一个任务可以包含不同APP的Activity(比如APP A启动了APP B的Activity来拍照),一个Activity在启动新Activity时也可以让后者创建在新任务中(详见下文)。系统有一个唯一的返回栈,它装载的对象是任务。后续创建的获得用户焦点的任务会堆叠在栈顶。用户按下Home键时,当前任务从返回栈中弹出,进入后台。当用户点击主页APP图标重新打开APP的主Activity时,或者用户导航回某个Activity时,该Activity所在的任务就回到返回栈的栈顶。
一、设置Activity启动模式
1、使用manifest文件:
<activity android:launchMode=["standard" | "singleTop" | "singleTask" | "singleInstance"] android:allowTaskReparenting=["false" | "true"] android:alwaysRetainTaskState=["false" | "true"] android:clearTaskOnLaunch=["false" | "true"] android:finishOnTaskLaunch=["false" | "true"] ... > ...</activity>
“standard”(默认模式)
系统在启动该Activity的任务中创建一个它的新实例。每个任务中可以有多个它的实例。
“singleTop”
在当前任务的栈顶若已有该Activity实例,则不创建,而是调用其onNewIntent()方法。每个任务中可以有多个它的实例,但栈顶只能有一个。
“singleTask”
首次启动该Acitity时,把它放到一个新的任务中。此后若再启动就调用其onNewIntent()方法。整个系统只有一个它的实例。
“singleInstance”
在”singleTask”的基础上,该Activity所在的任务仅有它这个Activity。它启动的其他Activity都会在新的任务中开启。
allowTaskReparenting
如果设为”true”,且该Activity已启动,则当它被其他任务中的Activity再次启动时,系统会把它移动到刚启动它的任务中。
alwaysRetainTaskState
默认情况下,在某个任务失去用户焦点一段时间后,系统会保留根Activity并清除其他Activity。如果任务中的根Activity把它设为”true”,则系统会一直保留所有Activity(除非系统内存不足需要腾地方)。
clearTaskOnLaunch
与上一个相反,如果任务中的根Activity把它设为”true”,则当任务失去用户焦点后,将保留根Activity并清除其他Activity。
finishOnTaskLaunch
若设为”true”,则当任务失去用户焦点后,该Activity将被销毁。
2、使用Intent标志:
// 给启动Activity所用的intent添加标志
intent.addFlags(Intent.FLAG_ACTIVITY_xxx);
FLAG_ACTIVITY_NEW_TASK
与上述”singleTask”等同。
FLAG_ACTIVITY_SINGLE_TOP
与上述”singleTop”等同。
FLAG_ACTIVITY_CLEAR_TOP
若任务中已有该Activity实例,则清除在其上方的所有Activity,恢复该实例并调用其onNewIntent()方法。
参考资料:
Android > Develop > API Guides > Tasks and Back Stack
https://developer.android.com/guide/components/tasks-and-back-stack.html
备注:
与总览屏幕(Overview Screen)相关的内容请参看:
Android > Develop > API Guides > Overview Screen
https://developer.android.com/guide/components/recents.html
- 任务和返回栈
- 任务和返回栈
- 任务和返回栈
- 任务和返回栈
- 任务和返回栈
- 任务和返回栈
- 任务栈和返回堆栈
- 任务栈和返回堆栈
- android 任务和返回栈
- Android 任务和返回栈
- Android任务和返回栈
- Android 任务和返回栈
- Android<任务和返回栈>
- Android 任务和返回栈
- Android任务和返回栈完全解析
- Android任务和返回栈完全解析
- Android任务和返回栈完全解析
- android任务和返回栈完全解析
- Java笔记---将本地项目纳入GitHub
- char与wchar_t函数对照表
- linux下利用python进行数据分析(1)Anaconda 安装
- 手机-终端-UE
- jsp本质,jsp静态导入与动态导入区别,jsp九个内置对象,jsp传值
- 任务和返回栈
- 庖丁解牛TLD
- Android数据存储——SharedPreferences、File、Sqlite
- 数据结构(Java)——树的入门学习
- leveldb代码结构
- JDK动态代理
- APPKit(APPlicationKit)简介
- 47页toBinaryString(int i)
- 十进制小数转换二进制、八进制、十六进制