Android 任务关联性有什么用?
Android 应用程序具有像一副纸牌一样形成堆栈的活动。如果你启动一个android应用程序,并启动五个活动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。 ETC。
请注意,活动B
and D
是相同的活动。如果用户要对D weather screen
,然后决定关闭该活动,然后关闭C Map view
?
然后用户会回到天气屏幕,并且用户会因为在级别上所做的更改而感到不高兴D weather screen
没有保存在关卡中B weather screen
。尽管这是相同的活动,但该活动的状态不同。
用户有 5 层 Activity 堆栈,其中两个是相同的 Activity。将所有 5 个从堆栈中弹出将产生这样的现象:您将与同一活动的两个不同版本进行交互,并且可能会非常混乱。
用户通常不会按照严格的活动堆栈来思考。他们想:“哦,天气视图我会在那里进行更改”,然后他们想返回到地图视图。然后再次备份,因为他们想返回登录屏幕。为什么是B weather app
显示以及为什么不保存关卡设置D
?
程序员也许能够减轻一些混乱,如果活动B
and D
状态已链接。这样一来,一个的改变就会改变另一个。每次用户打开新的天气屏幕时,它都会秘密打开天气屏幕的单个实例。
在这些情况下,可能需要更改 Activity 的 taskAffinity。用户将更改级别 D。然后返回到级别 B。并查看 B 中对 D 所做的更改。
该程序保留了一个可以备份的堆栈,这很好,当用户在随机位置打开同一活动的 X 个实例时,它们都是一个。
带有更多说明的幻灯片:http://www.slideshare.net/RanNachmany/manipulated-android-tasks-and-back-stack http://www.slideshare.net/RanNachmany/manipulating-android-tasks-and-back-stack