Android任务亲和力解释

时间:2013-07-26 04:36:37

标签: android android-manifest taskaffinity

属性taskAffinity究竟用于什么?我已经完成了documentation,但我无法理解。

任何人都可以用外行来解释任务亲和力吗?

3 个答案:

答案 0 :(得分:152)

Android Task Affinity用于什么?

Android应用程序具有形成堆栈的活动,就像一副牌。如果你启动一个Android应用程序,并启动五个活动A,B,C,D,E。它们将形成一个堆栈

E   - chat view
D   - weather screen
C   - map view
B   - weather screen
A   - login screen

E是最后一个要启动的活动,它正在显示。如果关闭E,将显示D.如果关闭D,将显示C.等

请注意,活动BD是相同的活动。如果用户对D weather screen进行了一些修改,然后决定关闭活动,然后关闭C Map view,该怎么办?

然后用户将回到天气屏幕,用户会感到不快,因为在D weather screen级别所做的更改未保存在级别B weather screen中。虽然它是相同的活动,但它与该活动的状态不同。

用户有5层活动堆栈,其中两个是相同的活动。从堆栈中弹出所有5个将会产生这样的现象:您将与同一活动的两个不同版本进行交互,并且可能非常混乱。

用户通常不会考虑严格的活动堆栈。他们认为:“天气预报我会在那里做出改变”然后他们想回到地图视图。然后再次备份,因为他们想要返回登录屏幕。为什么显示B weather app以及为什么不保存级别D的设置?

如果活动BD在州内相关联,程序员可能会减轻一些混淆。这种方式改变为一方改变另一方。每次用户打开新的天气屏幕时,它都会秘密打开天气屏幕的单个实例。

在这些情况下,可能需要更改活动的taskAffinity。用户将更改级别D.然后返回到级别B.并查看B中对D进行的更改。

该程序保留了一个可以备份的堆栈,这很好,当用户在随机位置打开相同活动的X个实例时,它们都是一个。

幻灯片显示更多解释: http://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack

答案 1 :(得分:6)

亲和力表示活动更喜欢属于哪个任务。

亲和力在两种情况下发挥作用:

当启动活动的意图包含FLAG_ACTIVITY_NEW_TASK标志时。

当某个活动的allowTaskReparenting属性设置为" true"。

请参阅http://developer.android.com/guide/components/tasks-and-back-stack.html

答案 2 :(得分:-1)

您可以在此详细演示中找到所有案例(有时还包括边缘案例)

请参考Manipulating Android tasks and back stack