歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux編程 >> Linux編程 >> Android 完美退出 App (Exit)

Android 完美退出 App (Exit)

日期:2017/3/1 10:32:21   编辑:Linux編程

最近兩天為了解決Android上面退出程序問題折騰了半死,在google & baidu 上面找了很久、很久出來的完全千篇一律,說的方法有三,但是經過我試驗後全部不行。

三個方法分別是:

1.killProcess, 這種方式當你kill後 Activity 會返回到上一個Activity

2.Android Level 8(包含8)前使用一個API來操作,Level8以後又是另外一種,所以不能通用

3.使用 FLAG_ACTIVITY_CLEAR_TOP,從 A 到 B

下面介紹自己的方式:

大家都知道 Android 的 Activity 是存著歷史棧的,比如從 A -> B -> C,C 完成 finish 後回到 B,把所有的Activity 都 finish了,程序就自然退出了。 當然在 finish 的同時也需要是否自己程序的其他資源。所以需要想個辦法把 Activity 給存起來。然後在程序退出的地方調用它們的 finish()方法。

使用全局變量。對了,第一個想到的就是繼承 Application,代碼入下。

  1. public class AgentApplication extends Application {
  2. private List<Activity> activities = new ArrayList<Activity>();
  3. public void addActivity(Activity activity) {
  4. activities.add(activity);
  5. }
  6. @Override
  7. public void onTerminate() {
  8. super.onTerminate();
  9. for (Activity activity : activities) {
  10. activity.finish();
  11. }
  12. onDestroy();
  13. System.exit(0);
  14. }
  15. }

然後在 Activity onCreate 的時候來調用 addActivity (),有人可能想到這個Application需要在所有的 Activity onCreate的時候都使用,需要做一個單例實例。其實根本不需要。在 Activity 中使用 this.getApplication() 就可以了。

最後在你需要推出程序的地方調用 application.onTerminate() 就可以了。記住:super.onTerminate() 必須調用,代碼中的 onDestroy()是我自己的釋放其他資源的方法,不是系統的。

運行以上代碼後,在LogCat 中會出現一行提示:

Process 包名 (pid xxxxx) has died. 證明你的程序退出了。現在你可以測試了。

Copyright © Linux教程網 All Rights Reserved