3 回答

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個贊
我已經(jīng)開始活動A-> B-> C-> D. 當(dāng)按下后退按鈕時,活動DI想要轉(zhuǎn)到活動A.由于A是我的起點(diǎn),因此已經(jīng)在堆棧中,A頂部的所有活動都被清除,你不能回到A的任何其他活動。
這實(shí)際上適用于我的代碼:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Intent a = new Intent(this,A.class);
a.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(a);
return true;
}
return super.onKeyDown(keyCode, event);
}

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超5個贊
為此,我使用FLAG_ACTIVITY_CLEAR_TOP標(biāo)志啟動Intent
(沒有FLAG_ACTIVITY_NEW_TASK)
并launchMode = "singleTask"在發(fā)布活動的清單中。
似乎它按我的需要工作 - 活動不會重新啟動,所有其他活動都會關(guān)閉。

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超13個贊
雖然這個問題已經(jīng)有了足夠的答案,但我想有人會想知道為什么這個標(biāo)志以這種特殊的方式工作,這就是我在Android文檔中找到的
上面示例中當(dāng)前運(yùn)行的活動B實(shí)例將在其onNewIntent()方法中接收您從此處開始的新intent,或者本身已完成并使用新intent重新啟動。
如果它已將其啟動模式聲明為“多個”(默認(rèn)值)并且您沒有在同一意圖中設(shè)置FLAG_ACTIVITY_SINGLE_TOP,那么它將被完成并重新創(chuàng)建; 對于所有其他啟動模式或如果設(shè)置了FLAG_ACTIVITY_SINGLE_TOP,則此Intent將被傳遞到當(dāng)前實(shí)例的onNewIntent()。
所以,要么,
1。launchMode從標(biāo)準(zhǔn)(即。singleTask或某事物)將活動A 更改為其他內(nèi)容。那么你的旗幟FLAG_ACTIVITY_CLEAR_TOP將不會重新啟動你的活動A.
要么,
2。使用Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP為您的標(biāo)志。然后它會以你想要的方式工作。
添加回答
舉報(bào)