當用戶在我的應用程序中點擊「註銷」時,我希望他們被帶到「登錄」活動並殺死我的應用程序中的所有其他正在運行或已暫停的活動。Android - 註銷所有活動
如果用戶以前登錄過,我的應用程序使用共享首選項繞過啓動時的「登錄」活動。因此,在這種情況下,FLAG_ACTIVITY_CLEAR_TOP將不起作用,因爲登錄活動將在用戶被帶到那裏時位於活動堆棧的頂部。
當用戶在我的應用程序中點擊「註銷」時,我希望他們被帶到「登錄」活動並殺死我的應用程序中的所有其他正在運行或已暫停的活動。Android - 註銷所有活動
如果用戶以前登錄過,我的應用程序使用共享首選項繞過啓動時的「登錄」活動。因此,在這種情況下,FLAG_ACTIVITY_CLEAR_TOP將不起作用,因爲登錄活動將在用戶被帶到那裏時位於活動堆棧的頂部。
你可以使用一個BroadcastReceiver來監聽你的其他活動「殺信號」
http://developer.android.com/reference/android/content/BroadcastReceiver.html
你們的活動,你註冊一個BroadcastReceiver
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("CLOSE_ALL");
BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
// close activity
}
};
registerReceiver(broadcastReceiver, intentFilter);
然後你只需發送一個廣播從您應用中的任意位置開始
Intent intent = new Intent("CLOSE_ALL");
this.sendBroadcast(intent);
代替FLAG_ACTIVITY_CLEAR_TOP
使用FLAG_ACTIVITY_CLEAR_TASK
(API 11+雖然):
如果傳遞給Context.startActivity()的意圖設置,該標誌將導致將與活動相關聯之前被清除任何現有任務活動開始。也就是說,活動成爲空的任務的新根,任何舊的活動都完成了。這隻能與FLAG_ACTIVITY_NEW_TASK結合使用。
這是完美的。謝謝。 :) – Enrichman
對於API 11+,您可以使用Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK
這樣的:
Intent intent = new Intent(this, MyActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(intent);
這將完全清除所有之前的活動(一個或多個),並開始新的活動。
嘿rockstar,放下你的吉他:) – Karoly
這應該是正確的答案。爲此使用廣播就是這樣的黑客! –
這是你的答案.. http://stackoverflow.com/questions/5453206/how-to-close-all-the-activities-of-my-application – Abhishek
必須錯過這個答案,非常有幫助。謝謝 –