首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 按返回鍵無法退出?啟動 Activity 殘留導致,正確退出姿勢

     編輯:程式設計綜合問答

使用 GuideActivity 啟動後跳轉 HomeActivity,在 HomeActivity 覆寫 onKeyDown 呼叫 System.exit(0) 或 killProcess 卻發現程式只是回到 GuideActivity。原因是 Activity 堆疊未清除,系統會將任務恢復到前一個 Activity。

錯誤做法

// HomeActivity
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if (keyCode == KeyEvent.KEYCODE_BACK) {
        android.os.Process.killProcess(android.os.Process.myPid()); // 無效
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

正確退出方案

發送 Intent.ACTION_MAIN + CATEGORY_HOME 將應用移至後台,再結束進程:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
System.exit(0);

更優雅的做法:單一啟動模式

在 Manifest 設定 GuideActivity 為 singleTask 或 singleInstance,並在跳轉時加 FLAG_ACTIVITY_CLEAR_TOP:

<activity android:name=".GuideActivity"
    android:launchMode="singleTask" />

// GuideActivity 跳轉
Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
finish(); // 結束自己

如此按返回鍵在 HomeActivity 直接 finish() 即可乾淨退出。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved