android 中System.exit(0)的体验

需求是点击某个按钮,重启app

比如,已经打开页面A,B,C,D,然后D页面有个按钮,点击一下,重启app,完全重启,也就是从application开始。

首先System.exit(0)这一句,只能关闭页面D,不能关闭A,B,C,
如果要把页面A,B,C一起关闭,需要加一句finishAffinity(),这个方法是Activity有的。

调用System.exit(0)以后,需要注意的事情。
如果你已经启动了某些Service,而onStartCommand方法又返回了START_STICKY,那么,app会立马执行application,完事重新start这些Service。
所以,如果我们的Service不是随着app启动而立马就启动的情况下,需要在exit之前把这些服务手动stop掉,免得app重启以后这些服务就自动启动了。

假设我们延迟启动app,如下,延迟10秒

    Intent mStartActivity = new Intent(activity, XXXActivity.class);
    int mPendingIntentId = 123;
    PendingIntent mPendingIntent = PendingIntent.getActivity(activity, mPendingIntentId,    mStartActivity, PendingIntent.FLAG_CANCEL_CURRENT);
    AlarmManager mgr = (AlarmManager) activity.getSystemService(Context.ALARM_SERVICE);
    mgr.set(AlarmManager.RTC, System.currentTimeMillis() + 10000, mPendingIntent);

如果没有START_STICKY的Service,那么application也是在10秒后启动的,如果有START_STICKY的Service,那么application是立马启动,并且把Service也重启,之后才是等待10秒加载XXXActivity的。

另一种杀死进程的方法

android.os.Process.killProcess(android.os.Process.myPid());

等同于

finishAffinity();
System.exit(0);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容