3 回答

TA貢獻(xiàn)1854條經(jīng)驗(yàn) 獲得超8個(gè)贊
我已經(jīng)開始活動(dòng)A-> B-> C-> D. 當(dāng)按下后退按鈕時(shí),活動(dòng)DI想要轉(zhuǎn)到活動(dòng)A.由于A是我的起點(diǎn),因此已經(jīng)在堆棧中,A頂部的所有活動(dòng)都被清除,你不能回到A的任何其他活動(dòng)。
這實(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個(gè)贊
為此,我使用FLAG_ACTIVITY_CLEAR_TOP標(biāo)志啟動(dòng)Intent
(沒有FLAG_ACTIVITY_NEW_TASK)
并launchMode = "singleTask"在發(fā)布活動(dòng)的清單中。
似乎它按我的需要工作 - 活動(dòng)不會(huì)重新啟動(dòng),所有其他活動(dòng)都會(huì)關(guān)閉。

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