【Android基础】TaskAffinity详解
来源:互联网 发布:office for mac免费吗 编辑:程序博客网 时间:2024/05/18 00:13
介绍
今天在开发过程中,碰到了这样一个现象:“我在旅游商家app中启动一个二维码扫描的Activity,当我在二维码扫描Activity中点击返回键时,居然返回到了携程旅行app”。经验反复debug才定位到问题。原来,二维码扫描Activity的注册居然是这样:
<activity android:name="ctrip.android.qrcode.QRScanActivity" android:configChanges="locale|fontScale|orientation|keyboardHidden|screenSize" android:launchMode="singleTask" android:screenOrientation="portrait" android:taskAffinity="ctrip.android.view" />
它的taskAffinity属性值居然为携程旅行app的包名。在把这个值修改为旅行商家app的包名后,就能正常返回了。正好今天开发量不是特别重,下午挑了个时间好好研究了一下。launchMode
1.任务栈:Activity的任务栈是我们很熟悉的了,它是一种先进后出的结构。当按下back键的时候,栈内Activity会一个一个地出栈,并且调用祺onDestroy()方法。如果任务栈中没有Activity,就把这个任务栈销毁。另外,一个App默认只有一个任务栈,以App包名来命名。
2.
standard:标准模式。每次启动Activity都会创建一个新的Activity实例,并将其压入栈顶,不管这个Activity是否存在。
3.
singleTop:栈顶复用模式。启动Activity时,如果这个Activity已经位于任务栈的栈顶,那么此Activity不会被重新创建。
4.
singleTask:栈内复用模式。启动Activity时,首先确认这个Activity指定的任务栈是否存在,否则创建任务栈。如果任务栈中已经存在这个Activity,那么这个Activity会被调到栈顶,其上的Activity依次弹出。
5.
singleInstance:这种模式的Activity只能单独位于一个任务栈内。
TaskAffinity
主角出现了。TaskAffinity就是指定任务栈的,并且只有在singleTask时才生效。
总结
1.TaskAffinity的作用是指定任务栈,并且只有在singleTask时才有效。
2.正常情况下,启动Activity都会加到当前的任务栈中。
- 【Android基础】TaskAffinity详解
- android android:taskAffinity 详解
- android:taskAffinity使用详解
- android:taskAffinity
- Android-taskAffinity
- android的android:taskAffinity
- android:taskAffinity && android:allowTaskReparenting
- android:taskAffinity初识
- android taskAffinity allowTaskReparenting
- android:taskAffinity初识
- android taskAffinity属性
- android:taskAffinity使用记录
- android的TaskAffinity属性
- Android--taskAffinity属性
- Android singleTask和 taskAffinity
- Android taskAffinity属性
- android taskAffinity属性
- Android–taskAffinity属性
- 双12根本不在话下,阿里首次揭秘扛过双11的千亿级特征分布式机器学习平台XPS
- selector
- 深度学习与神经网络入门必读1!
- JAVA 使用PRINTF或FORMAT 进行格式化输出
- 阿里安全技术平台资深专家玄泰解密:“如何防止信息泄露”
- 【Android基础】TaskAffinity详解
- Jackson 解析json数据之忽略解析字段注解@JsonIgnoreProperties
- java.lang.RuntimeException: Unable to instantiate application
- SQL命令和常用语句大全
- ue 4 源码中有参考价值的基础类或库
- java集合类总结
- 游戏实时语音解决方案是怎么炼成的
- IDEA配置jdk (SDK)
- mysql事物四种隔离级别详解