2014-12-08 7 views
1

У меня есть довольно большое приложение, над которым я работаю. Иногда, когда я запускаю его на 2.3 устройствах, поток пользовательского интерфейса как-то застревает. Я не думаю, что это одна из моих собственных задач, но я просто не могу понять, что это такое. Есть ли способ узнать, какая именно задача в настоящее время работает в потоке пользовательского интерфейса?Пользовательский интерфейс застрял на 2.3 устройствах

Подробнее: Я бегу Runnable на Handler, который использует главный Looper в какой-то момент, но run() никогда не будет выполняться в тех случаях. Я также получаю ANR, когда я прикасаюсь к экрану. Я предполагаю, что это должно быть связано с памятью в некотором роде, потому что, когда я удаляю одно из фоновых изображений, кажется, что он застрял меньше. Тем не менее, я не получаю исключение OOM.

Редактировать

Я активировал ведение журнала для главного Looper. Последняя задача, которая отправляется, имеет what=1004. Это определенно не от меня.

Looper: >>>>> Dispatching to Handler{406cbec0} null: 1004 
+0

Вы обновляете пользовательский интерфейс из вторичной резьбы? – Cata

+0

Не то, чтобы я знал. Я включил строгий режим, я думаю, что уведомит меня. – SimonSays

+0

Ну, на мой взгляд, вы либо делаете что-то тяжелое в основном потоке, либо в сетях/db-вызовах, либо обновляете пользовательский интерфейс из вторичного потока, но тогда приложение будет разбиваться в большинстве случаев. Если вам нужна дополнительная помощь, напишите здесь какой-то код своей деятельности :) – Cata

ответ

0

К сожалению для размещения в ответ (не достаточное количество баллов для комментариев), но я считаю, именовании AsyncTasks и темы, а затем с помощью DDMS или любой другой Android профайлер, возможно, поможет решить вашу проблему.

Определите наиболее эффективные и трудоемкие методы и потоки или, возможно, что-то, что перегружает память (Исследуйте кучу с помощью DDMS).

Взгляните на следующие ссылки:

http://developer.android.com/tools/debugging/ddms.html http://developer.android.com/tools/debugging/debugging-tracing.html

К сожалению, если это не было какой-либо помощи.

+0

Проблема в том, что я превысил количество меток dex и не могу запустить приложение на старых версиях Android, не снимая его сначала с помощью proguard. Так что дамп памяти или профилирование метода в значительной степени не является вариантом. – SimonSays

 Смежные вопросы

  • Нет связанных вопросов^_^