我遇到了一个问题,System.exit(0)
使活动迅速退出时,应用程序启动:System.exit(0),使活动迅速退出时,应用程序启动
,我看到使用System.exit(0)
实现应用程序的完全退出,我这样做,但活动并未经过项目生命周期,所以我用下面的方法:
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 {
//Simulation Activity Destroyed too time consuming and increase the probability of problems
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);
}
}
但是,这样的问题出现,如果我退出了最后活动(退出应用程序),立即快速启动应用程序,然后“活动”退出,但未完成(闪退)。
编辑 我想要做的就是退出应用程序时,所有活动destroyed.but什么,有一个问题:当应用程序要完成自己的过程中,所有活动被破坏,但如果还没有打电话系统。退出(),启动了一个activity,然后调用System.exit(),此时会出现一个flash退出,如何避免这个问题?
好吧,但我的目的是结束应用程序进程,不考虑是否应该这样做),只是在默认的启动活动销毁之后,而不是在任何其他活动中做这个操作过程的结束,我使用上面的方法来确保所有的启动活动都会能够在应用程序中完成其生命周期。但是,这有问题的描述,这应该是多线程同步问题,但我睡在应用程序,为什么它可以在睡眠期间创建活动?不应用和活动是不一样的线程,但他们的线程ID是1.
为什么使用System.exit而不是Activity.finish? System.exit退出整个过程我想。 – StarPinkER 2013-02-21 03:08:31
@JermaineXu是的,我想要做的是完成应用程序 – admin 2013-02-21 04:25:07