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會立馬執(zhí)行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);
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容