Android Task Affinity Explanation

What exactly is the attribute taskAffinity used for? I have gone through the documentation but I couldn't understand much.

Can anyone explain task affinity in laymans terms?

59067 次浏览

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以状态链接,程序员可能会减轻一些混淆。这种方式改变了一个,改变了另一个。每次用户打开一个新的天气屏幕时,它都会秘密地打开天气屏幕的单个实例。

在这些情况下,更改活动的任务关联性可能是可取的。用户将改变级别 D。然后回到 B 层,看看 B 层到 D 层的变化。

The program keeps a stack you can backup through, which is nice, and when the user opens up X instances of the same activity in random places, they are all one.

更多解释: Http://www.slideshare.net/rannachmany/manipulating-android-tasks-and-back-stack

The affinity indicates which task an activity prefers to belong to.

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

当启动活动的意图包含 FLAG _ ACTIVITY _ NEW _ TASK 标志时。

当一个活动的 allowTaskReparenting 属性设置为“ true”时。

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

您可以在这个详细的演示文稿中找到所有的案例(有时是边缘案例)

请参阅 操纵 Android 任务和回栈