Помогите прочитать следы стека ANR в Android

1

Я уже некоторое время сражаюсь с ANR, которое происходит в одном из моих сервисов. Это очень сложно воспроизвести, и пользовательский интерфейс, кажется, имеет полную функциональность прямо перед тем, как это произойдет в 100% случаев, когда никогда не наблюдается заметного запаздывания или замерзания. У моего сервиса есть TimerTask и несколько AsyncTask, которые он запускает, и это все.

Трассировки стека, которые я получаю, когда вы сообщаете об этом с Android Market в 2.2, трудно читать, похоже, ссылка на какой-либо из моего кода не отображается напрямую, а только из классов в SDK. Может ли кто-нибудь взглянуть на stacktrace и посмотреть, сможете ли вы сказать, что происходит.

Распечатка настолько велика, что я решил отправить ее в pastebin, надеюсь, что это не противоречит правилам. http://pastebin.com/KHUD0UHW

Вот также журнал Logcat http://pastebin.com/V5xSey36

  • 0
    Основной поток находится в иерархии представления, обновляя экран. У вас есть данные ANR от logcat?
  • 0
    добавил это выше.
Показать ещё 2 комментария
Теги:
stack-trace
android-anr-dialog

1 ответ

5

Возможно, это не ваши приложения. ANR отображается для любого текущего приложения. Однако, если другое приложение в системе действительно вынимает ваш процессор и заставляет ваше приложение голодать, ваше приложение получит ANR, поскольку оно имеет фокус пользователя. Если это так, вы ничего не можете сделать. Возможно, лучший способ проверить это - это смотреть или заставлять систему выполнять синхронизацию. Синхронизация обычно довольно тяжелая на телефоне и может вызвать плохое отставание на менее мощных телефонах.

Еще один способ проверить, есть ли у вас более медленный телефон, установить большое приложение с рынка. После того, как он войдет в фазу "Установка" после загрузки, сделайте что-то очень немного в своем приложении. Если фаза установки занимает более 5 секунд или около того, у нее есть довольно неплохая возможность сделать приложение доступным для ANR. Это из-за плохой скорости ввода-вывода при установке приложения. IO блокирует другие приложения от получения процессорного времени. Android думает, что это означает, что вы его крадете.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню