What exactly is the attribute taskAffinity used for? I have gone through the documentation but I couldn't understand much.
taskAffinity
Can anyone explain task affinity in laymans terms?
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。等等。
注意,活动 B和 D是相同的活动。如果用户对 D weather screen做了一些修改,然后决定关闭活动,然后关闭 C Map view,会怎么样?
B
D
D weather screen
C Map view
然后用户会回到天气屏幕,用户会不高兴,因为在级别 D weather screen所做的更改没有保存在级别 B weather screen。虽然它是相同的活动,但它是该活动的不同状态。
B weather screen
用户有一个5层的活动堆栈,其中两个是相同的活动。从堆栈中弹出所有5个将创建一个现象,在这个现象中,您将与同一活动的两个不同版本进行交互,这可能非常令人困惑。
用户通常不会按照严格的活动堆栈来思考。他们想: “哦,天气视图,我要在那里做一个改变”,然后他们想回到地图视图。然后再次备份,因为他们想回到登录屏幕。为什么是 B weather app显示,为什么它没有保存级别 D的设置?
B weather app
如果活动 B和 D以状态链接,程序员可能会减轻一些混淆。这种方式改变了一个,改变了另一个。每次用户打开一个新的天气屏幕时,它都会秘密地打开天气屏幕的单个实例。
在这些情况下,更改活动的任务关联性可能是可取的。用户将改变级别 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 任务和回栈