Как отключить ANR Watchdog при создании журналов трассировки для профилирования после установки моего приложения? - PullRequest
0 голосов
/ 13 февраля 2019

В настоящее время мы пытаемся получить файлы журналов трассировки профиля для огромного приложения для Android, которое мы изучили в классе MyApplication, следуя документации о настройке моего приложения для получения журналов трассировки .

Мы пытаемся разобраться в том, что происходит, когда наше приложение инициализируется, и 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 голосов
/ 14 февраля 2019

На самом деле, оказывается, у нас есть свой 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();
    }
...