Android 任务亲和说明

标签 android android-manifest taskaffinity

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 BD 是同一个 Activity 。如果用户对 D 天气屏幕 进行一些修改,然后决定关闭 Activity,然后关闭 C map View ,该怎么办?

然后用户会回到天气屏幕,用户会不高兴,因为在级别 D 天气屏幕 所做的更改没有保存在级别 B 天气屏幕 .尽管它是同一个 Activity ,但它是该 Activity 的不同状态。

用户有一个 5 层的 Activity 堆栈,其中两个是相同的 Activity 。将所有 5 个从堆栈中弹出会产生一种现象,即您将与同一 Activity 的两个不同版本进行交互,并且可能会非常困惑。

用户通常不会从僵化的 Activity 堆栈中进行思考。他们认为:“哦,天气 View ,我将在那里进行更改”,然后他们想回到 map View 。然后再次备份,因为他们想回到登录屏幕。为什么B 天气应用 会显示,为什么没有保存D 级别的设置?

如果 Activity BD 在状态中链接,程序员可能会减轻一些困惑。这种方式改变一个改变另一个。每次用户打开一个新的天气屏幕时,它都会 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/

相关文章:

android - Android 上的 OpenGL ES 2 : how to use VBOs

Android:像iphone一样的页面 curl 效果

c# - 创建时无法解析 IMvxMainThreadDispatcher 类型的参数调度程序的参数

android - 如何在保持向后兼容性的同时将 foregroundServiceType 添加到库 list ?

android - 强制应用程序如何始终运行在自己的任务中?

bash - 命令的交换律

android - 在 Android 设备上评估应用程序性能的好方法

android - 如何为Android应用程序锁定可滚动上方的文本字段

android - 完成后如何从最近的任务中删除具有 taskAffinity 的 singleTask Activity ?

java - 如何更改Android中的任务关联性?