3 回答

TA貢獻(xiàn)1828條經(jīng)驗(yàn) 獲得超6個(gè)贊
當(dāng)您使用finish()方法時(shí),它不會(huì)完全關(guān)閉該進(jìn)程,它仍然在后臺(tái)運(yùn)行。
請(qǐng)?jiān)谥饕顒?dòng)中使用此代碼(請(qǐng)不要在每個(gè)活動(dòng)或子活動(dòng)中使用):
@Override
public void onBackPressed() {
android.os.Process.killProcess(android.os.Process.myPid());
// This above line close correctly
}

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
你是對(duì)的:調(diào)用finish()
只會(huì)退出當(dāng)前活動(dòng),而不是整個(gè)應(yīng)用程序。但是,有一個(gè)解決方法:
每次啟動(dòng)Activity時(shí),都要使用它startActivityForResult(...)
。如果要關(guān)閉整個(gè)應(yīng)用,可以執(zhí)行以下操作:
setResult(RESULT_CLOSE_ALL);finish();
然后定義每個(gè)活動(dòng)的onActivityResult(...)
回調(diào),這樣當(dāng)活動(dòng)返回RESULT_CLOSE_ALL
值時(shí),它還會(huì)調(diào)用finish()
:
@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) { switch(resultCode) { case RESULT_CLOSE_ALL: setResult(RESULT_CLOSE_ALL); finish(); } super.onActivityResult(requestCode, resultCode, data);}
這將導(dǎo)致級(jí)聯(lián)效應(yīng)關(guān)閉所有活動(dòng)。
此外,我在他的建議中支持CommonsWare:將密碼存儲(chǔ)在變量中,以便在應(yīng)用程序關(guān)閉時(shí)將其銷毀。

TA貢獻(xiàn)1877條經(jīng)驗(yàn) 獲得超6個(gè)贊
當(dāng)用戶希望退出所有打開的活動(dòng)時(shí),他們應(yīng)該按下一個(gè)按鈕,加載應(yīng)用程序啟動(dòng)時(shí)運(yùn)行的第一個(gè)Activity,在我的案例中為“LoginActivity”。
Intent intent = new Intent(getApplicationContext(), LoginActivity.class);intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);intent.putExtra("EXIT", true);startActivity(intent);
上面的代碼清除除LoginActivity之外的所有活動(dòng)。LoginActivity是用戶運(yùn)行程序時(shí)提出的第一個(gè)活動(dòng)。然后將此代碼放入LoginActivity的onCreate中,以指示何時(shí)傳遞'Exit'消息時(shí)它應(yīng)該自毀。
if (getIntent().getBooleanExtra("EXIT", false)) { finish(); }
從Android平臺(tái)得到的這個(gè)問題的答案是:“不要制作退出按鈕。完成用戶不再需要的活動(dòng),活動(dòng)管理器會(huì)根據(jù)需要清理它們?!?/p>
- 3 回答
- 0 關(guān)注
- 383 瀏覽
添加回答
舉報(bào)