taskAffinity属性的奇特效果
加载某个Activity的intent,Flag被设置成FLAG_ACTIVITY_NEW_TASK时,它会首先检查是否存在与自己taskAffinity相同的Task,如果存在,那么它会直接宿主到该Task中,如果不存在则重新创建Task。
首先写一个应用A1,它有两个Activity(Activity1和Activity2),AndroidManifest.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.taskdemo"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="18" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.example.taskdemo.<span style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;">Activity1</span>"android:label="@string/app_name"android:taskAffinity="com.task" ></activity><activity android:name="com.example.taskdemo.<span style="color: rgb(51, 51, 51); font-family: Arial; font-size: 14px; line-height: 26px;">Activity2</span>" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>
然后,我们再写一个应用A2,它包含一个Activity(MainActivity ),AndroidManifest.xml如下:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.example.taskdemo2"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="18" /><applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:taskAffinity="com.task"android:theme="@style/AppTheme" ><activityandroid:name="com.example.taskdemo2.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity></application></manifest>
运行一下看看下过吧 ....就知道里面是怎么跑的了.....
总结:
当一个应用程序加载一个singleTask模式的Activity时,首先该Activity会检查是否存在与它的taskAffinity相同的Task。
1、如果存在,那么检查是否实例化,如果已经实例化,那么销毁在该Activity以上的Activity并调用onNewIntent。如果没有实例化,那么该Activity实例化并入栈。
2、如果不存在,那么就重新创建Task,并入栈。
用一个流程来表示:
然后我们来检测singleTask模式融入taskAffinity时的情况,我们也是用上文中测试singleTask的例子,在此不列出,读者翻阅前文查阅。唯一不同的是,我们将A2和Activity2设置成相同的taskAffinity。
我们发现测试结果也有一定的出入,就是,当从singleTask中启动Activity时,并没用重新创建一个Task,而是进入了和它具有相同affinity的MyActivity所在的Task。
于是,我们也能得到以下结论:
1、当一个应用程序加载一个singleTask模式的Activity时,如果该Activity没有被实例化,那么就重新创建一个Task,并入栈,如果已经被实例化,那么就调用该Activity的onNewIntent;
2、singleTask的Activity所在的Task不允许存在其他Activity,任何从该Activity加载的其它 Actiivty(假设为Activity2)都会被放入其它的Task中,如果存在与Activity2相同affinity的Task,则在该 Task内创建Activity2。如果不存在,则重新生成新的Task并入栈。
taskAffinity属性的奇特效果相关推荐
- 【Android 应用开发】Activity 任务亲和性 taskAffinity 设置 ( taskAffinity 属性 )
文章目录 I . 任务亲和性 ( taskAffinity ) 简介 II . 任务亲和性 ( taskAffinity ) 设置 III . 任务亲和性 ( taskAffinity ) 与 FLA ...
- android 当中taskAffinity属性与launchMode相关
一.本文尝试解释以下问题 1. Activity被启动之后放在哪个任务栈当中?与哪些因素有关? 2. Activity的四种启动模式对Activity的启动有哪些影响? 3. 在Activity ...
- Activity的taskAffinity属性
Activity的taskAffinity属性 - Android - ITeye技术网站 Activity的归属,也就是Activity应该在哪个Task中,Activity与Task的吸附关系.我 ...
- html中的变圆的属性,CSS3属性之圆角效果——border-radius属性
在css3之前,要实现圆角的效果可以通过图片或者用margin属性实现(可以参考这里:http://www.hicss.net/css-practise-of-image-round-box/).实现 ...
- HTML-浮动与清除浮动、文字属性、动画效果
HTML-浮动与清除浮动.文字属性.动画效果 一.浮动与清除浮动 1.浮动可以解决文字保卫图片的问题 2.浮动可以解决莫名其妙的间隔问题 3.浮动可以向左,向右进行排版对齐 浮动: 可以设置元素,脱离 ...
- 关于taskAffinity属性的使用
前不久修改Gallery2,发现Camera没有Manifest.xml文件,而且是和Gallery2一起进行编译的,而将两个应用关联起来的就是taskAffinity属性了 说实话,我还从来没用过这 ...
- HTML文字阴影火焰,CSS3利用text-shadow属性实现多种效果的文字样式展现方法
一.效过图展示: 已经是比较久之前学习的文字效果了.但是还是很实用很有趣的.利用CSS3提供的text-shadow属性可以给页面上的文字添加阴影效果,因此可以替换掉之前使用过的一些繁琐的图片.到目前 ...
- 【Android 进程保活】提升进程优先级 ( 1 像素 Activity 提高进程优先级 | taskAffinity 亲和性说明 | 运行效果 | 源码资源 )
文章目录 一.1 像素 Activity 提高进程优先级 1.主界面 MainActivity 2.1 像素 Activity 3.广播接收者 4.管理类 5.AndroidManifest.xml ...
- easyui 如何为标签动态追加属性实现渲染效果
简述一下在项目遇到的问题,这边有一个需求,选择不同类型,加载不同的div标签(其中属性是否必填是区分类型的关键) html界面是这样的 <div class="grid_1 lbl&q ...
最新文章
- PCL:拟合平面直线和曲线以及空间曲线的原理到算法实现
- pytorch2——Pytorch基础数据结构——张量(深度之眼)
- C++中的sizeof与strlen对比
- Android 之 沉浸式状态栏及顶部状态栏背景色设置
- Java并发编程--ReentrantReadWriteLock
- SQL Server--疑难杂症之坑爹的Windows故障转移群集
- SQL SERVER 修改字段长度
- SqlServer2012下载+安装+启动(资源+密钥)
- Python常用库urllib中urllib.request模块使用详解
- 一个IT从业者的课外读物___养生锻炼篇
- Java学习之JavaFX安装
- 怎样给公司定义一份完美的maven parent pom 文件
- metinfo 5.3.19密码重置漏洞
- 美版有锁iphone 如何上电信3G
- 对接支付宝当面付,记录过程
- 技能兴鲁试题--可视化
- 复杂指令集与精简指令集的原子操作
- 打开管家婆软件提示:已停止工作/程序无响应
- Burpsuite sqlmap插件
- hudson.security.AccessDeniedException2: anonymous is missing the Overall/Read permission