加载某个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属性的奇特效果相关推荐

  1. 【Android 应用开发】Activity 任务亲和性 taskAffinity 设置 ( taskAffinity 属性 )

    文章目录 I . 任务亲和性 ( taskAffinity ) 简介 II . 任务亲和性 ( taskAffinity ) 设置 III . 任务亲和性 ( taskAffinity ) 与 FLA ...

  2. android 当中taskAffinity属性与launchMode相关

    一.本文尝试解释以下问题 1.  Activity被启动之后放在哪个任务栈当中?与哪些因素有关? 2.  Activity的四种启动模式对Activity的启动有哪些影响? 3.  在Activity ...

  3. Activity的taskAffinity属性

    Activity的taskAffinity属性 - Android - ITeye技术网站 Activity的归属,也就是Activity应该在哪个Task中,Activity与Task的吸附关系.我 ...

  4. html中的变圆的属性,CSS3属性之圆角效果——border-radius属性

    在css3之前,要实现圆角的效果可以通过图片或者用margin属性实现(可以参考这里:http://www.hicss.net/css-practise-of-image-round-box/).实现 ...

  5. HTML-浮动与清除浮动、文字属性、动画效果

    HTML-浮动与清除浮动.文字属性.动画效果 一.浮动与清除浮动 1.浮动可以解决文字保卫图片的问题 2.浮动可以解决莫名其妙的间隔问题 3.浮动可以向左,向右进行排版对齐 浮动: 可以设置元素,脱离 ...

  6. 关于taskAffinity属性的使用

    前不久修改Gallery2,发现Camera没有Manifest.xml文件,而且是和Gallery2一起进行编译的,而将两个应用关联起来的就是taskAffinity属性了 说实话,我还从来没用过这 ...

  7. HTML文字阴影火焰,CSS3利用text-shadow属性实现多种效果的文字样式展现方法

    一.效过图展示: 已经是比较久之前学习的文字效果了.但是还是很实用很有趣的.利用CSS3提供的text-shadow属性可以给页面上的文字添加阴影效果,因此可以替换掉之前使用过的一些繁琐的图片.到目前 ...

  8. 【Android 进程保活】提升进程优先级 ( 1 像素 Activity 提高进程优先级 | taskAffinity 亲和性说明 | 运行效果 | 源码资源 )

    文章目录 一.1 像素 Activity 提高进程优先级 1.主界面 MainActivity 2.1 像素 Activity 3.广播接收者 4.管理类 5.AndroidManifest.xml ...

  9. easyui 如何为标签动态追加属性实现渲染效果

    简述一下在项目遇到的问题,这边有一个需求,选择不同类型,加载不同的div标签(其中属性是否必填是区分类型的关键) html界面是这样的 <div class="grid_1 lbl&q ...

最新文章

  1. PCL:拟合平面直线和曲线以及空间曲线的原理到算法实现
  2. pytorch2——Pytorch基础数据结构——张量(深度之眼)
  3. C++中的sizeof与strlen对比
  4. Android 之 沉浸式状态栏及顶部状态栏背景色设置
  5. Java并发编程--ReentrantReadWriteLock
  6. SQL Server--疑难杂症之坑爹的Windows故障转移群集
  7. SQL SERVER 修改字段长度
  8. SqlServer2012下载+安装+启动(资源+密钥)
  9. Python常用库urllib中urllib.request模块使用详解
  10. 一个IT从业者的课外读物___养生锻炼篇
  11. Java学习之JavaFX安装
  12. 怎样给公司定义一份完美的maven parent pom 文件
  13. metinfo 5.3.19密码重置漏洞
  14. 美版有锁iphone 如何上电信3G
  15. 对接支付宝当面付,记录过程
  16. 技能兴鲁试题--可视化
  17. 复杂指令集与精简指令集的原子操作
  18. 打开管家婆软件提示:已停止工作/程序无响应
  19. Burpsuite sqlmap插件
  20. hudson.security.AccessDeniedException2: anonymous is missing the Overall/Read permission

热门文章

  1. python提取网页中表格数据_Python2 BeautifulSoup 提取网页中的表格数据及连接
  2. jquery的radio的change事件
  3. 2019年3月份日志
  4. maatwebsite/excel 3.0版本使用方法
  5. oracle行转列逗号分隔,Oracle逗号分隔列转行实现方法
  6. 什么是JIT?怎么优化?
  7. 智能语音技术如何切C端市场,科大讯飞交出这样一份答卷
  8. python基础——类(面向对象的特征)
  9. 干货 | RDS For SQL Server单库上云
  10. pdf转换jpg需要用的软件