簡體   English   中英

活動未銷毀

[英]Activity not destroyed

我有一個應用程序,當用戶按下“后退”按鈕時,該應用程序會進入后台

 @Override
 public void onBackPressed() {
    Intent setIntent = new Intent(Intent.ACTION_MAIN);
    setIntent.addCategory(Intent.CATEGORY_HOME);
    setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(setIntent);
 }

因此,用戶關閉應用程序的唯一方法是使用task manager並手動將其停止。

現在,我正在嘗試通過使用Android設備中的task manager關閉我的應用程序來測試onDestroy ,但是,在Android Studio該應用程序似乎還活着,它顯示Session: '<app_name>' : runningonDestroy正在Session: '<app_name>' : running不叫。

為什么會這樣,我該如何解決?

**我想看到在我使用task manager停止應用程序並手動停止它時調用了onDestroy ,因為用戶要關閉我的應用程序就必須這樣做,而不是通過按后退按鈕來完成。 通過按“后退”按鈕,該應用程序將繼續運行並且運行良好,這就是我想要的。

為什么要重新啟動背面的活動? 什么都不做

 @Override
 public void onBackPressed() {
 }

調用finish()銷毀一個Activity。

@Override
 public void onBackPressed() {
    Intent setIntent = new Intent(Intent.ACTION_MAIN);
    setIntent.addCategory(Intent.CATEGORY_HOME);
    setIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(setIntent);
    finish();
 }

“設置” →“ 開發人員選項”下 ,轉到“應用程序”部分,然后啟用“ 不保留活動 ”選項。 然后,每當您按下后退按鈕時,該應用程序將被銷毀。 我想覆蓋“后退按鈕”操作以銷毀應用,可以覆蓋“活動”中的onKeyDown

  @Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
    if ((keyCode == KeyEvent.KEYCODE_BACK))
    {
        finish();
    }
    return super.onKeyDown(keyCode, event);
}

您可以調用finish(); ,例如,在startActivity(setIntent);之后startActivity(setIntent);

或者,您可以調用super.onBackPressed(); ,也最后。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM