ANR-WatchDog原理
ANR-WatchDog 單獨起一個子線程向主線程發(fā)送一個重置變量操作的Runnable,然后休眠一段時間(自定義的ANR超時時間)晨川,如果休眠后該變量的值沒有被重置防症,則表明有ANR發(fā)生哮翘,此時可以重啟APP(針對某家客戶的特定需求)耀找。
客戶端實現(xiàn)
1.在app級的build.gradle
里添加ANR-WatchDog庫的依賴:
implementation 'com.github.anrwatchdog:anrwatchdog:1.4.0'
2.在Application的onCreate
方法里初始化:
new ANRWatchDog()
.setANRListener(new ANRWatchDog.ANRListener() {
@Override
public void onAppNotResponding(ANRError error) {
restartApp();
}
})
.start();
其中restartApp方法為:
private void restartApp() {
Intent intent = getPackageManager()
.getLaunchIntentForPackage(getPackageName());
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(intent);
android.os.Process.killProcess(android.os.Process.myPid());
}