求解,關於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的做法。