android--Manifest文件中allowTaskReparenting属性的含义

来源:互联网 发布:王思丽事件知乎 编辑:程序博客网 时间:2024/06/10 17:35

最近在仔细的阅读安卓的官方文档,说到manifest文件时,有个属性allowTaskReparenting一直看不明白,原文在这:allowTaskReparenting ,英文理解能力强的朋友可以读一下然后给我解释解释哈。

针对这个属性的含义,上网查了一些中文资料,品味了半天,总算是能理解一点了,但是不一定正确,希望大牛们多指正。

allowTaskReparenting的官方定义是“Whether or not the activity can move from the task that started it to the task it has an affinity for when that task is next brought to the front — "true" if it can move, and "false" if it must remain with the task where it started.”简单翻译就是是否允许该Activity从启动他的任务(可以理解为activity栈)转移到与他有亲密关系(affinity)的任务中,当有亲密关系的任务再次启动时。干看这句话我是没懂什么意思,后来看到一个帖子的解释,稍微明白了一点。就用官方提供的那个例子来说,一个邮件应用,当收到的邮件内容中包含一个链接地址时,用户点击这个链接会调用browser应用的一个activityB去显示。但是下次browser应用再显示时,这个activityB还存在,而下次再显示邮件应用时,activityB就不在其中了。是因为browser和activityB有相同的affinity,所以从邮件应用的任务中(这里要解释一下,如果是系统的browser APP,那么显示网页内容的activityB将分配一个新的任务栈,因为他配置launchmode是singletask)转回到了browser应用的任务中去。如果activityB的allowTaskReparenting属性设置为false,那么当browser启动时,它就不会回到browser的任务中,而是一直呆在邮件应用的任务中。

以上是我的理解,不知道是不是正确,请指正。

0 0