我的應用程序有許多活動,可以以任意順序如何清除Android應用程序的所有活動
例活動歷史被稱爲: 甲 - >乙 - 「ç - > d - > A - >乙 - > E
現在在活動E中,我正在'取消註冊'設備(將用戶註銷並刪除可能已下載到他們的SD卡的任何數據)。期望的行爲是應用程序'重新開始',並且用戶被提示登錄活動並且回擊將使用戶返回到主屏幕。
所以現在,活動E應該以某種方式清除活動堆棧。目前,當從E啓動A的意圖時,我正在設置FLAG_ACTIVITY_CLEAR_TOP。問題是,當用戶訪問A然後進入中間活動並在去E之前重新訪問A時,堆棧上仍然存在活動。
甲 - >乙 - 「ç - > d - >一個
那麼該用戶已被註銷,不能使用活動BD,但如果用戶點擊從活動一回,他們可以訪問活動BD。是否有一種簡單的方法可以將除登錄活動以外的所有活動從堆棧中清除?
更新:
所以我試着更新我的BaseActivity(每個活動我的應用程序子類中的一個),包含靜態標誌isDeregistering,告訴活動,如果真要毀滅自己。問題在於,每個活動都會調用finish(),並且我會啓動到主屏幕,並且無法重新啓動應用程序,直到關閉應用程序。有一個更好的方法嗎?
這很奇怪,通過閱讀FLAG_ACTIVITY_CLEAR_TOP上的文檔,它說:例如,考慮一個由活動組成的任務:A,B,C,D。如果D調用startActivity(),並將Intent解析爲組件的活動B,那麼C和D將完成,並且B收到給定的意圖,導致堆棧現在是:A,B。 這似乎意味着如果您開始意圖使用該標誌A,所有中間活動應該完成... – I82Much 2010-09-29 22:31:04
是的,這是行爲,只有A活動在堆棧中兩次。當堆棧被清除時,它會在調用活動和接收活動的第一個實例之間清除,因此A活動的兩個實例之間的任何內容都會保留在堆棧上。 – danh32 2010-09-30 01:28:30