Android启动模式
来源:互联网 发布:王奕霏编程 编辑:程序博客网 时间:2024/06/03 20:56
文章摘自Android开发艺术探索
Android在Activity启动时有四种启动方式:standard、singleTop、singleTask、singleInstance,下面分别介绍启动模式的含义:
1、standard: 标准模式,也是默认启动模式,每次启动一个Activity都会重新创建一个新的实例,不管这个实例是否存在。当我们用ApplicationContext去启动standard模式的Activity的时候会报错:android.until.AndroidRuntimeException:Calling startActivity from outside of and Activity context requires the FLAG_ACTIVITY_NEW_TASK flag. Is this really what you want? 这是因为standard模式的activity默认会进入启动它的Activity所属的任务栈中,但是由于非activity类型的Context并没有所谓的任务栈,所以会出现问题。解决的办法:为待启动的activity指定FLAG_ACTIVITY_NEW_TASK 标记位。
2、singleTop: 栈顶复用模式。在这种模式下,如果新的Activity已经位于任务栈的栈顶,那么此activity不会被重新创建,同时它的onNewIntent方法会被调用,通过此方法的参数我们可以取出当前请求的信息。
3、singleTask: 栈内复用模式。这是一种单实例模式,在这种模式下,只要activity在一个栈中存在,那么多次启动此activity都不会重新创建实例,和singleTop一样,系统会调用onNewIntent。具体一点,当一个具有singleTask模式的activity请求启动后,比如activity A,系统首先会寻找是否存在A想要任务栈,如果不存在,就重新创建一个任务栈,然后创建A实例后把A放入栈内,若果存在A所需的任务栈,这时要看A是否在栈中有实例存在,如果有实例存在,那么系统就会把A调到栈顶并调用它的onNewIntent方法,如果不存在,就创建A的实例并把A压入栈中。
4、singleInstance: 单实例模式。它除了具有singleTask的所有特性外,就是此模式的activity只能单独的存在一个任务栈中。
TaskAffinity
TaskAffinity属性主要和singleTask启动模式或者allowTaskReparenting属性配对使用,其他情况下没有意义。当TaskAffinity和singleTask配对使用的时候,他是具有该模式的activity的目前任务栈的名字,待启动的activity会运行在名字和TaskAffinity相同的任务栈中。
- android Activity启动模式
- Android Activity启动模式
- android 启动模式
- Android 启动模式
- android中四种启动模式
- android ics 启动模式
- android启动模式
- android启动模式
- Android启动模式分析
- Android Activity启动模式
- android 启动模式(二)
- android 启动模式
- android activity 启动模式
- android 启动模式
- Android的启动模式
- android的启动模式
- Android - Activity - 启动模式
- android Activity启动模式
- 使用 SSHFS 挂载远程的 Linux 文件系统及目录
- 51nod 1305 Pairwise Sum and Divide
- OpenCV21(金字塔LK光流算法)
- 树状数组+离散化求逆序数poj2299Ultra-QuickSort
- 11
- Android启动模式
- DB2 mainframe support UNICODE
- 【codeforces 732D】【二分+贪心】
- 判断2..100以内的质数--sqrt
- 死锁剖析
- android studio使用Aidl跨进程调用服务
- 微信网页小游戏开发实践——走过的坑
- Java面向对象7——toString和equals
- Android应用将"清除数据"项变为"管理空间",自定义数据清除