我的應用程序以活動A(登錄屏幕)開始,我總是希望它在活動堆棧的底部。有沒有一種方法可以檢測哪些活動將在點擊後退按鈕後恢復?
基於登錄後的一些邏輯,我啓動了一些其他Activity B-Z。應用程序中有一個菜單,可讓您在任何活動B-Z之間切換。
如果用戶點擊後退按鈕足夠多次,我不希望它們返回到登錄屏幕。如果在活動A上按下後退按鈕作爲堆棧上的下一個活動,我希望將用戶發送到Android主屏幕。本活動不保證是由活動A啓動的活動,因爲我的活動使用單個活頁。
想法?
我能想到的唯一的其他選擇是刪除singleTop,並且Activity A啓動的任何Activity都會記住(我的Activities都是從基類派生的,我將用它來做)。
另一種可能性可能會做這樣的事情在onBackPressed處理程序如下:
if (getParent().getClass().getName().equals(ActivityA.class.getName())) {}
我與這個問題是我*希望* ActivityA在堆棧上。如果我的應用程序中的web服務返回說用戶不再登錄,我會啓動帶有FLAG_ACTIVITY_CLEAR_TOP標誌的ActivityA。由於ActivityA位於堆棧的底部,因此它將銷燬頂部的所有活動並將用戶返回到ActivityA(登錄屏幕)。如果沒有ActivityA已經在堆棧的底部,我不知道我是否可以完成同樣的事情,對嗎? – Andrew
@Andrew:即使活動不在堆棧AFAIK上,也可以使用FLAG_ACTIVITY_CLEAR_TOP,如果你也使用FLAG_ACTIVITY_SINGLE_TOP(或者在你的情況下,在每個地方都使用'singleTop',這很奇怪)。 – CommonsWare
以下是可幫助您解決問題的討論鏈接:http://stackoverflow.com/questions/3007998/on-logout-clear-activity-history-stack-preventing-back-button-from-opening-l ?RQ = 1。正如你將會看到的那樣,存在一個乾淨的解決方案,不幸的是它僅適用於API v11 +,以及一些在任何Android上運行良好的聰明黑客。 – Egor