求解,关于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
没有启动完成就退出了(闪退)。
求解决办法,谢谢!