不懂Android如何應(yīng)用Crash實(shí)現(xiàn)自動(dòng)重啟??其實(shí)想解決這個(gè)問(wèn)題也不難,下面讓小編帶著大家一起學(xué)習(xí)怎么去解決,希望大家閱讀完這篇文章后大所收獲。
在慶陽(yáng)等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需搭建網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),高端網(wǎng)站設(shè)計(jì),網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣,成都外貿(mào)網(wǎng)站制作,慶陽(yáng)網(wǎng)站建設(shè)費(fèi)用合理。
首先,我們肯定要在Application里面注冊(cè)一個(gè)CrashHandler,監(jiān)聽(tīng)?wèi)?yīng)用crash
public class TestApplication extends MultiDexApplication { private static TestApplication mInstance; @Override public void onCreate() { super.onCreate(); Thread.setDefaultUncaughtExceptionHandler(new CrashHandler()); }
然后在這個(gè)CrashHandler 想辦法重啟應(yīng)用。有兩種方法如下:
方法1.通過(guò)AlarmManager
public class CrashHandler implements Thread.UncaughtExceptionHandler { @Override public void uncaughtException(Thread t, Throwable e) { //重啟app /** * 這種方式 功能是可以達(dá)成 * 但是有問(wèn)題就是如果說(shuō)你的app掛了 這時(shí)候會(huì)顯示系統(tǒng)桌面 * 然后你的app有啟動(dòng)起來(lái)了 * 給人的感覺(jué)不太好 */ 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:
使用第三方庫(kù)
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()); } }
這個(gè)第三方庫(kù)的原理是:
當(dāng)app 崩潰的時(shí)候,ProcessPhoenix.triggerRebirth(TestApplication.getInstance());
就會(huì)觸發(fā)啟動(dòng)另外一個(gè)進(jìn)程的Activity,然后把當(dāng)前崩潰的進(jìn)程結(jié)束掉。在新進(jìn)程的Activity里面,把應(yīng)用在自己的進(jìn)程里面的啟動(dòng)起來(lái)。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享Android如何應(yīng)用Crash實(shí)現(xiàn)自動(dòng)重啟??jī)?nèi)容對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,遇到問(wèn)題就找創(chuàng)新互聯(lián),詳細(xì)的解決方法等著你來(lái)學(xué)習(xí)!