2012-06-26 144 views
1

我有一個具有「登錄」和「註銷」行爲的應用程序。在用戶登錄後,在註銷時可能會有任意數量的活動留在堆棧上。安卓「關閉」活動

當用戶註銷時,我想要重置所有應用程序狀態。我清除了我的磁盤高速緩存和首選項,但運行(暫停)活動中仍有狀態。事實上,當用戶再次登錄時,我發現上一次登錄會話中的舊活動仍然存在於舊狀態(我明白爲什麼這是當然的)。我如何導致整個應用程序重置/關閉/重新啓動?

我見過幾篇關於使用startActivityForResult(),onActivityResult()的帖子來冒泡一個「註銷」結果代碼,導致每個活動依次關閉。這看起來很痛苦,我希望有更好的方法。

編輯:我已經試過啓動「登錄」和不同的標記無濟於事活動,

loginIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP); 
+0

可能重複ack「按鈕打開已登錄的Activites](http://stackoverflow.com/questions/3007998/on-logout-clear-activity-history-stack-preventing-back-button-from-opening-l) –

回答

1

你的清單,你可以把下面的屬性到你的活動:

android:clearTaskOnLaunch="true" 

所以你最終會喜歡的東西:

<activity android:name=".ui.Activity" android:clearTaskOnLaunch="true" android:theme="@style/MyTheme"> 
       <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
[開註銷,明確活動歷史堆棧,防止「b的
+0

只有在主屏幕上啓動活動時纔有效。在我的情況下,當用戶選擇「註銷」時,我想返回到最初的「登錄」活動。 –

+1

以及考慮你已經嘗試過的標誌,並且是應該工作的實際標誌。但是接下來我還有一個問題,你是在一個真實的設備或模擬器上嘗試它? – Raykud

+0

如果是這樣,那麼你可以有這裏相同的問題:http://stackoverflow.com/a/5794572/1084764 – Raykud