程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> application-android 關於Application中使用System.exit(0)退出應用的一個問題。

application-android 關於Application中使用System.exit(0)退出應用的一個問題。

編輯:編程綜合問答
android 關於Application中使用System.exit(0)退出應用的一個問題。

求解,關於android Application中使用System.exit(0)退出應用導致啟動Activiry時閃退的一個問題:
在一個項目中看到在Application中使用System.exit(0)來實現應用的完全退出,因此自己也照著做了,但項目中應用的退出並沒有讓Activiry走完它的生命周期,所以我用了以下的方法:

public class App extends Application {
    private int mLock = 0;
    @Override
    public void onCreate() {
        registerActivityLifecycleCallbacks(new ActivityLifecycleCallbacks() {
            @Override
            public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
                mLock++;
            }
            @Override
            public void onActivityDestroyed(Activity activity) {
                try {
                    //模擬Activity Destroyed耗時過長,增大問題出現的概率
                    Thread.sleep(300);
                } catch (InterruptedException e) {
                }
                mLock--;
                if(mLock<=0){
                    exit();
                }
            }
            @Override
            public void onActivityStopped(Activity activity) {}
            @Override
            public void onActivityStarted(Activity activity) {}
            @Override
            public void onActivitySaveInstanceState(Activity activity, Bundle outState) {}
            @Override
            public void onActivityResumed(Activity activity) {}
            @Override
            public void onActivityPaused(Activity activity) {}

        });
    }

    public void exit() {
        System.exit(0);
    }

}

但是這樣的話問題就出現了,如果我退出了最後一個Activity(退出應用)後,馬上又快速地啟動應用,這時Activity沒有啟動完成就退出了(閃退)。
求解決辦法,謝謝!

最佳回答:


無論如何,不應該在Android中使用System.exit(0),不是標准的退出App的做法。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved