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());
}

你可能感兴趣的:(Android ANR Watch Dog)