後退堆棧的我想修改後堆在我的Android應用程序,例如:修改Android中
眼下,這裏是流量:
甲 - >乙 - 「ç - > D - > E - > F
我希望能夠修改回棧,以便當用戶進入活動F時,D和E從堆棧中刪除。所以如果用戶碰到後面,流程是F - > C.
另外,從F開始,用戶能夠進入活動B,這也應該擦除C,D,E和F.
我已經看到了一些關於能夠清除堆棧或刪除頂部項目的信息,但是當觸發一個活動時,我想從堆棧中刪除一些項目。
任何幫助表示讚賞,非常感謝。
後退堆棧的我想修改後堆在我的Android應用程序,例如:修改Android中
眼下,這裏是流量:
甲 - >乙 - 「ç - > D - > E - > F
我希望能夠修改回棧,以便當用戶進入活動F時,D和E從堆棧中刪除。所以如果用戶碰到後面,流程是F - > C.
另外,從F開始,用戶能夠進入活動B,這也應該擦除C,D,E和F.
我已經看到了一些關於能夠清除堆棧或刪除頂部項目的信息,但是當觸發一個活動時,我想從堆棧中刪除一些項目。
任何幫助表示讚賞,非常感謝。
您可以創建一個意圖,標誌爲intent.FLAG_ACTIVITY_CLEAR_TOP
,從F到C.然後,您將必須以意圖調用startActivity(),並觸發它發生onBackPressed或類似事件。
Intent i = new Intent(this, C.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(i)
看到這個答案,當你導航回到它也有保證是c不會重新啓動交易:https://stackoverflow.com/a/11347608/1003511
什麼FLAG_ACTIVITY_CLEAR_TOP
會做的就是去回到最近的活動實例C在堆棧上,然後清除它上面的所有內容。但是,這可能會導致重新創建活動。如果您想確保它將是該活動的同一個實例,請使用FLAG_ACTIVITY_SINGLE_TOP
。從文檔:
活動B在上面的例子中當前運行的實例將 要麼接受你是從這裏開始,在其 onNewIntent()方法的新意圖,或者是本身完成,與新 重新啓動意圖。如果它已宣佈其啓動模式爲「多個」(默認爲 ),並且您沒有將FLAG_ACTIVITY_SINGLE_TOP設置爲相同的 意圖,則它將被完成並重新創建;對於其他所有啓動 模式的FLAG_ACTIVITY_SINGLE_TOP,如果設置了FLAG_ACTIVITY_SINGLE_TOP,則此Intent將被傳送到當前實例的onNewIntent()中 。
編輯:這類似於你想要做什麼的代碼示例:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent a = new Intent(this, C.class);
a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(a);
return true;
}
return super.onKeyDown(keyCode, event);
}
你需要的是android:excludeFromRecents="true"
必須添加到清單文件的Activity標籤中。它會停止所有活動,將具有此標記的堆棧放入清單中的Activity標記中。
示例代碼
<activity
android:name="com.xx.xx.ActivityName"
android:excludeFromRecents="true"
</activity>
,並確保你叫finish()
這些動作的方法,你不希望在活動堆棧(開始另一項活動後)。
你好,這將使活動從歷史當中ISN完全消失我想要什麼。我希望活動僅在某些其他活動被解僱後消失。感謝您的幫助! – mwrazam 2012-07-07 04:40:38
這很完美。非常感謝你的幫助。 – mwrazam 2012-07-07 04:39:43