У меня есть довольно большое приложение, над которым я работаю. Иногда, когда я запускаю его на 2.3 устройствах, поток пользовательского интерфейса как-то застревает. Я не думаю, что это одна из моих собственных задач, но я просто не могу понять, что это такое. Есть ли способ узнать, какая именно задача в настоящее время работает в потоке пользовательского интерфейса?Пользовательский интерфейс застрял на 2.3 устройствах
Подробнее: Я бегу Runnable
на Handler
, который использует главный Looper
в какой-то момент, но run()
никогда не будет выполняться в тех случаях. Я также получаю ANR, когда я прикасаюсь к экрану. Я предполагаю, что это должно быть связано с памятью в некотором роде, потому что, когда я удаляю одно из фоновых изображений, кажется, что он застрял меньше. Тем не менее, я не получаю исключение OOM.
Редактировать
Я активировал ведение журнала для главного Looper
. Последняя задача, которая отправляется, имеет what=1004
. Это определенно не от меня.
Looper: >>>>> Dispatching to Handler{406cbec0} null: 1004
Вы обновляете пользовательский интерфейс из вторичной резьбы? – Cata
Не то, чтобы я знал. Я включил строгий режим, я думаю, что уведомит меня. – SimonSays
Ну, на мой взгляд, вы либо делаете что-то тяжелое в основном потоке, либо в сетях/db-вызовах, либо обновляете пользовательский интерфейс из вторичного потока, но тогда приложение будет разбиваться в большинстве случаев. Если вам нужна дополнительная помощь, напишите здесь какой-то код своей деятельности :) – Cata