Android 應用Crash 后自動重啟的方法小結
前提
首先,我們肯定要在Application里面注冊一個CrashHandler,監(jiān)聽應用crash
public class TestApplication extends MultiDexApplication { private static TestApplication mInstance; @Override public void onCreate() { super.onCreate(); Thread.setDefaultUncaughtExceptionHandler(new CrashHandler()); }
然后在這個CrashHandler 想辦法重啟應用。有兩種方法如下:
方法1.通過AlarmManager
public class CrashHandler implements Thread.UncaughtExceptionHandler { @Override public void uncaughtException(Thread t, Throwable e) { //重啟app /** * 這種方式 功能是可以達成 * 但是有問題就是如果說你的app掛了 這時候會顯示系統(tǒng)桌面 * 然后你的app有啟動起來了 * 給人的感覺不太好 */ Intent intent = new Intent(); Context context = TestApplication.getInstance(); intent.setClass(context, MainActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); PendingIntent pendingIntent = PendingIntent.getActivity(context,0,intent,PendingIntent.FLAG_ONE_SHOT); AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); alarmManager.set(AlarmManager.RTC,System.currentTimeMillis() + 100,pendingIntent); Process.killProcess(Process.myPid()); System.exit(0); } }
方法2:
使用第三方庫
implementation 'com.jakewharton:process-phoenix:2.0.0'
public class CrashHandler implements Thread.UncaughtExceptionHandler { @Override public void uncaughtException(Thread t, Throwable e) { ProcessPhoenix.triggerRebirth(TestApplication.getInstance()); } }
這個第三方庫的原理是:
當app 崩潰的時候,ProcessPhoenix.triggerRebirth(TestApplication.getInstance());
就會觸發(fā)啟動另外一個進程的Activity,然后把當前崩潰的進程結束掉。在新進程的Activity里面,把應用在自己的進程里面的啟動起來。
總結
到此這篇關于Android 應用Crash 后自動重啟的文章就介紹到這了,更多相關android 自動重啟內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Android LinearLayout實現(xiàn)自動換行效果
這篇文章主要為大家詳細介紹了Android LinearLayout實現(xiàn)自動換行效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-08-08Android使用MulticastSocket實現(xiàn)多點廣播圖片
這篇文章主要為大家詳細介紹了Android使用MulticastSocket實現(xiàn)多點廣播圖片,具有一定的參考價值,感興趣的小伙伴們可以參考一下2019-01-01Android開發(fā)實現(xiàn)讀取Assets下文件及文件寫入存儲卡的方法
這篇文章主要介紹了Android開發(fā)實現(xiàn)讀取Assets下文件及文件寫入存儲卡的方法,涉及Android文件與目錄的讀取、寫入、轉換等相關操作技巧,需要的朋友可以參考下2017-10-10Android實現(xiàn)繪制LocationMarkerView圖的示例代碼
LocationMarker是運動軌跡上Start、End, 以及整公里點上筆者自定義繪制的一個MarkerView。這篇文章主要介紹了Android實現(xiàn)繪制LocationMarkerView圖的示例代碼,希望對大家有所幫助2023-02-02