Android ANR Watch Dog

ANR-WatchDog原理

ANR-WatchDog 單獨起一個子線程向主線程發送一個重置變量操作的Runnable,然后休眠一段時間(自定義的ANR超時時間),如果休眠后該變量的值沒有被重置,則表明有ANR發生,此時可以重啟APP(針對某家客戶的特定需求)。

ANR-WatchDog.png

客戶端實現

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());
}
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容