Android 完美退出 App (Exit)

openkk 12年前發布 | 61K 次閱讀 Android Android開發 移動開發

三個方法分別是:

  1. killProcess, 這種方式當你kill后 Activity 會返回到上一個Activity
  2. Android Level 8(包含8)前使用一個API來操作,Level8以后又是另外一種,所以不能通用
  3. 使用 FLAG_ACTIVITY_CLEAR_TOP,從 A 到 B
  4. </ol>

    下面介紹自己的方式:
    大家都知道 Android 的 Activity 是存著歷史棧的,比如從 A -> B -> C,C 完成 finish 后回到 B,把所有的Activity 都 finish了,程序就自然退出了。 當然在 finish 的同時也需要是否自己程序的其他資源。所以需要想個辦法把 Activity 給存起來。然后在程序退出的地方調用它們的 finish()方法。
    使用全局變量。對了,第一個想到的就是繼承 Application,代碼入下。
    public class AgentApplication extends Application {
    
    private List<Activity> activities = new ArrayList<Activity>();
    
        public void addActivity(Activity activity) {
            activities.add(activity);
        }
    
        @Override
        public void onTerminate() {
            super.onTerminate();
    
            for (Activity activity : activities) {
                activity.finish();
            }
    
            onDestroy();
    
            System.exit(0);
        }
    }
    然后在 Activity  onCreate 的時候來調用  addActivity (),有人可能想到這個Application需要在所有的 Activity  onCreate的時候都使用,需要做一個單例實例。其實根本不需要。在 Activity 中使用  this.getApplication() 就可以了。
    最后在你需要推出程序的地方調用 application.onTerminate() 就可以了。記住:super.onTerminate() 必須調用,代碼中的 onDestroy()是我自己的釋放其他資源的方法,不是系統的。

    運行以上代碼后,在LogCat 中會出現一行提示:
    Process  包名 (pid  xxxxx)  has died.  證明你的程序退出了。現在你可以測試了。

    轉自:http://blog.csdn.net/zeus_9i/article/details/7259881
 本文由用戶 openkk 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!