在检测我的App后生成用于分析的跟踪日志时,如何禁用ANR看门狗?

时间:2019-02-13 10:25:42

标签: android performance profiling android-anr-dialog

当前,我们尝试获取documentation about instrumenting my app to get trace logs之后在MyApplication类上提供的大型Android应用的配置文件跟踪日志文件。

我们正在尝试研究初始化我们的应用程序时发生的情况,而Dagger2在启动应用程序时创建对象图。

冷启动通常需要花费几秒钟的时间,我遇到的问题是,当我添加调试跟踪时,它会极大地减慢应用程序的初始化速度,并因ANR消息而崩溃。

    com.github.anrwatchdog.ANRError: Application Not Responding
    Caused by: com.github.anrwatchdog.ANRError$$$_Thread: main (state = RUNNABLE)

我想知道是否有一种方法可以防止Android OS在长时间阻止时使我的应用程序崩溃,或者至少增加ANR阈值。

欢迎任何帮助或提示。谢谢!

对于其他情况,这大致就是我在MyApplication.class中所做的:

public void onCreate() {
   super.onCreate();

   Debug.startMethodTracing("MyApp_onCreate()");

   injectSelf();
   AppInit.initApp(this);

   Debug.stopMethodTracing();
}

1 个答案:

答案 0 :(得分:0)

实际上,事实证明,我们有自己不知道的ANRWatchDogManager,可以在哪里扩展限制。

public class ANRWatchDogManager implements ANRWatchDog.ANRListener {

该班级的某个地方:

    public void startANRWatchDog() {
        final int timeoutInterval = isDebugBuild() && isEmulator()
                ? ANR_INCREASED_TIMEOUT
                : ANR_DEFAULT_TIMEOUT;
        new ANRWatchDog(timeoutInterval).setANRListener(this).start();
    }