Android任务亲和力解释
taskAffinity
使用的属性究竟是什么? 我已经通过文件,但我不明白。
任何人都可以用俗语说明任务亲和力吗?
Android任务关联使用什么?
一个Android应用程序具有像一副纸牌一样形成堆栈的活动。 如果你启动一个android应用程序,并启动五个活动A,B,C,D,E。 他们将形成一个堆栈
E - chat view D - weather screen C - map view B - weather screen A - login screen
E是最后一个要开始的活动,它正在展示。 如果closuresE,则会显示D. 如果closuresD,则会显示C. 等等
请注意,活动B
和D
是相同的活动。 如果用户要对D weather screen
进行一些修改,然后决定closures该活动,然后closuresC Map view
怎么办?
然后,用户将回到天气屏幕,并且用户将不高兴,因为在D weather screen
级D weather screen
所做的改变没有保存在B weather screen
级B weather screen
。 虽然这是同一个活动,但这是一个不同的活动状态。
用户有五层活动,其中两个活动相同。 从堆栈中popup所有5将会产生这样的现象,即您将与两个不同版本的相同活动进行交互,并且可能相当混乱。
用户通常不会考虑一堆僵硬的活动。 他们认为:“天气观点,我会在那里做一个改变”,然后他们想要回到地图视图。 然后再次备份,因为他们想要回到login屏幕。 为什么B weather app
显示,为什么不保存D
级的设置?
如果活动B
和D
在状态中联系起来,程序员可能能够减轻一些混淆。 这样改变一个改变另一个。 每次用户打开一个新的天气屏幕时,它都会秘密地打开天气屏幕的单个实例。
在这种情况下,改变Activity的taskAffinity可能是可取的。 用户将改变级别D.然后返回到级别B.并查看对D做出的改变。
程序保留一个可以备份的堆栈,这很好,当用户在随机的地方打开同一个活动的X实例时,它们都是一个。
幻灯片更多的解释: http : //www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack
亲和度指示活动优选属于哪个任务。
亲和力在两种情况下发挥作用:
当启动活动的意图包含FLAG_ACTIVITY_NEW_TASK标志时。
当某个活动的allowTaskReparenting属性设置为“true”时。
请参阅http://developer.android.com/guide/components/tasks-and-back-stack.html