taskAffinity 和allowTaskReparenting的用途

taskAffinity用于指定当前Activity(activity1)所关联的Task,allowTaskReparenting用于配置是否允许该activity可以更换从属task,通常情况二者连在一起使用,用于实现把一个应用程序的Activity移到另一个应用程序的Task中。

allowTaskReparenting用来标记Activity能否从启动的Task移动到taskAffinity指定的Task,默认是继承至application中的allowTaskReparenting=false,如果为true,则表示可以更换;false表示不可以。

引用网上的解释例子:

一般来说,当Activity启动后,它就与启动它的Task关联,并且在那里耗尽它的整个生命周期。当当前的Task不再显示时,你可以使用这个特性来强制Activity移动到有着affinity的Task中。

例如:

在一个E-Mail邮件内容中,包含一个web页的链接,点击它就会启动一个Activity来显示这个页面。但是这个Activity是由浏览器应用程序定义的,那么现在它作为e-mail Task(任务)的一部分。如果它重新宿主到Browser Task里,当Browser下一次进入到前台时,它就能被看见(上一次从邮件中打开的地址),并且,当e-mail Task再次进入前台时,就看不到它了。

注解:

1:点击邮件内容中的链接,会打开一个Activity显示这个链接,这个Activity是属于Android系统浏览器的。

2.当显示这个链接的时候,点击Home键,让邮件App进入到后台中。

3.点击浏览器应用程序,你会发现打开的浏览器程序显示的是,上一次从邮件中打开的链接页面。

4.此时点击Home键,浏览器App进入到后台中。

5.打开邮件App(注意我们没有关闭邮件App,而是让他进入到了后台中),你会发现那个显示链接的Activity不见了(因为他已经移动到浏览器的Task中了);

参考地址:http://blog.csdn.net/einarzhang/article/details/6971878

未完待续....

时间: 2024-10-21 12:24:25

taskAffinity 和allowTaskReparenting的用途的相关文章

Activity之taskAffinity属性、allowTaskReparenting属性和Android退出整个应用解决方案

allowTaskReparenting属性 属性: android:allowTaskReparenting 除了launchMode可以用来调配Task,的另一属性taskAffinity,也是常常被使用.taskAffinity,是一种物以类聚的思想,它倾向于将taskAffinity属性相同的Activity,扔进同一个Task中.不过,它的约束力,较之launchMode而言,弱了许多.只有当中的allowTaskReparen ting设置为true,抑或是调用方将Intent的fl

android当中taskAffinity属性与launchMode相关

一.本文尝试解释以下问题 1.  Activity被启动之后放在哪个任务栈当中?与哪些因素有关? 2.  Activity的四种启动模式对Activity的启动有哪些影响? 3.  在Activity中使用startActivityForResult(intent, REQUESTCODE);和onActivityResult() 是否与被启动的Activity的launchMode有关?如果有关,有什么关系? 二.Activity被启动之后放在哪个任务栈当中?与哪些因素有关? 1.基本论断:A

Android清单文件详解(三)----应用程序的根节点<application>

<application>节点是AndroidManifest.xml文件中必须持有的一个节点,它包含在<manifest>节点下.通过<application>节点的相关属性,我们可以声明Android应用程序的相关特性.这个节点包含所有应用程序组件的节点,包括Activity,服务,广播接收器和内容提供者,并且包含了一些可能影响所有组件的属性.这些属性中的其中一些又会作为默认值而被设置到应用程序组件的相同属性上,比如icon,label,permission,pro

Android Application Fundamentals——Android应用程序基础知识

Application Fundamentals--应用程序基础知识 Key classes--关键类 Activity Service BroadcastReceiver ContentProvider Intent In this document--在这篇文章中 Application Components--应用程序组件 Activating components: intents--激活组件:意图 Shutting down components--关闭组件 The manifest

activity之栈管理

在android中,一个activity组件可以激活另一个activity组件:本程序activity和其它程序的activity. 若新的被激活的activity组件属于另一个应用程序,则那个activity组件会运行在那个应用程序的进程中,但是从用户的角度来看,好像就是属于本应用程序一样.Android是通过将之前的activity组件和新被激活的activity组件放入同一个任务栈来实现这个功能的.从用户的角度看,一个任务栈就代表了"一个应用程序".它实际上是一个栈,里面放着一组

Android总结篇系列:Activity Intent Flags及Task相关属性

同上文一样,本文主要引用自网上现有博文,并加上一些自己的理解,在此感谢原作者. 原文地址: http://blog.csdn.net/liuhe688/article/details/6761337 -------------------------------------------------------------------------- 今天我们来讲一下Activity的task相关内容. 上次我们讲到Activity的四种启动模式的时候,已经了解到一些关于task的技术,今天我再向大

Android官方文档之App Components(Tasks and Back Stack)

一个应用中包含了多个Activity实例,每个Activity都有各自的action,每个Activity也可以启动其他Activity,如一个Email应用程序应包含一个显示Email信息列表的Activity.当用户点击列表中的某一项时,显示详细内容的Activity将被启动. 本文将介绍Activity的栈和后退栈(Tasks and Back Stack)的相关知识,您需访问官方原文,您可以点击这个链接:<Tasks and Back Stack>. 一个Activity甚至可以启动其

Android Api Component---翻译任务和回退栈(Tasks and Back Stack)

一个应用程序通常包含多个activity.每一个activity应当围绕一个指定的用户可以执行的并且可以开启其它activity的动作种类被设计.例如,一个emali应用程序也许有一个activity展示新消息列表.当用户选择了一个消息的时候,一个新的activity会打开查看这个消息. 一个activity甚至可以开启设备上的其它应用程序的activity.例如,如果你的应用程序向发送一个邮件消息,你可以定义一个intent执行一个"send"动作并且包含一些像email地址和消息的

Tasks and Back Stack

1.概述 一个应用一般含有多个activity.每一个activity都是围绕着一系列用户可能执行的特定动作而设计的,并且可以从一个activity启动另外一个activity.例如,一个e-mail应用可能含有一个activity,用来显示新的邮件列表.当用户点击选择了一个邮件,一个新的activity就会被打开,用来显示邮件的具体内容. 一个activity可以启动设备上另一个应用中的activity.比如你的应用希望发送一封邮件,你可以定义一个intent,用来执行"send"的