该属性到底是taskAffinity
用来做什么的?我已经阅读了文档,但是我不太了解。
谁能用外行术语解释任务亲和力?
该属性到底是taskAffinity
用来做什么的?我已经阅读了文档,但是我不太了解。
谁能用外行术语解释任务亲和力?
Answers:
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。等等
请注意,活动B
和D
是相同的活动。如果用户要对进行一些修改D weather screen
,然后决定关闭活动,然后关闭,该C Map view
怎么办?
然后,用户将回到天气屏幕,并且用户将不满意,因为在级别D weather screen
上所做的更改未保存在级别中B weather screen
。尽管这是同一活动,但它是该活动的不同状态。
用户有一个5层活动堆栈,其中两个是相同的活动。从堆栈中弹出所有5个将创建一种现象,在该现象中您将与同一活动的两个不同版本进行交互,并且可能会造成混乱。
用户通常不会考虑严格的活动堆栈。他们认为:“哦,天气视图,我将在此处进行更改”,然后,他们想回到“地图”视图。然后再次备份,因为他们想返回“登录”屏幕。为什么B weather app
显示,为什么不从关卡保存设置D
?
如果“活动” B
和“ 活动D
状态”处于链接状态,则程序员可以减轻一些混乱。这样一来改变就改变了另一。每次用户打开新的天气屏幕时,它都会秘密打开天气屏幕的单个实例。
在这种情况下,可能需要更改Activity的taskAffinity。用户将更改级别D。然后回到级别B。然后查看B中对D所做的更改。
该程序保留一个可以备份的堆栈,这很好,当用户在随机位置打开同一活动的X个实例时,它们都是一个。
带有更多说明的幻灯片:http : //www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack
singleInstance
而不是使用taskAffinity
怎么样?
taskAffinity
所有:-(的解释是模糊的惊人的论断答案得到这么多的upvotes。
taskAffinity
用于指定活动希望在Intent
其中运行的任务的名称。当包含标记时FLAG_ACTIVITY_NEW_TASK
,活动将被放入此特定任务(由定义taskAffinity
)。
Although it's the same activity, it's a different STATE of that activity.
我会说:“这是该活动的另一个实例。”
亲和力指示活动喜欢属于哪个任务。
亲和力在两种情况下起作用:
当启动活动的意图包含FLAG_ACTIVITY_NEW_TASK标志时。
当活动的allowTaskReparenting属性设置为“ true”时。
请参考http://developer.android.com/guide/components/tasks-and-back-stack.html
您可以在此详细演示中找到所有案例(有时还包括边缘案例)