taskAffinity
属性究竟是做什么用的?我已经通过documentation但我不能理解太多。
谁能用通俗的方式解释任务亲和力?
最佳答案
Android Task Affinity 有什么用途?
一个 android 应用程序有一个像一副纸牌一样形成堆栈的 Activity 。如果你启动一个 android 应用程序,并启动五个 Activity A、B、C、D、E。它们将形成一个堆栈
E - chat view
D - weather screen
C - map view
B - weather screen
A - login screen
E 是最后一个要启动的 Activity,它正在显示。如果关闭 E,将显示 D。如果关闭 D,将显示 C。等等
注意 Activity B
和 D
是同一个 Activity 。如果用户对 D 天气屏幕
进行一些修改,然后决定关闭 Activity,然后关闭 C map View
,该怎么办?
然后用户会回到天气屏幕,用户会不高兴,因为在级别 D 天气屏幕
所做的更改没有保存在级别 B 天气屏幕
.尽管它是同一个 Activity ,但它是该 Activity 的不同状态。
用户有一个 5 层的 Activity 堆栈,其中两个是相同的 Activity 。将所有 5 个从堆栈中弹出会产生一种现象,即您将与同一 Activity 的两个不同版本进行交互,并且可能会非常困惑。
用户通常不会从僵化的 Activity 堆栈中进行思考。他们认为:“哦,天气 View ,我将在那里进行更改”,然后他们想回到 map View 。然后再次备份,因为他们想回到登录屏幕。为什么B 天气应用
会显示,为什么没有保存D
级别的设置?
如果 Activity B
和 D
在状态中链接,程序员可能会减轻一些困惑。这种方式改变一个改变另一个。每次用户打开一个新的天气屏幕时,它都会 secret 打开天气屏幕的单个实例。
在这些情况下,可能需要更改 Activity 的 taskAffinity。用户将更改 D 级。然后回到 B 级。并查看 B 中对 D 所做的更改。
该程序保留了一个可以备份的堆栈,这很好,当用户在随机位置打开相同 Activity 的 X 个实例时,它们都是一个。
带有更多解释的幻灯片: http://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack
关于Android 任务亲和说明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17872989/