2011-02-02 3 views
3

Я разрабатываю приложение в Android 2.2.Черный экран при изменении ориентации устройства

При изменении ориентации устройства (путем поворота устройства) черный экран окрашивается в пределах моей активности (нет даже названия активности), требуется несколько секунд (7-15 секунд), а затем активность наконец, окрашивается.

Я тестировал его эмулятор и два разных устройства, и поведение такое же.

В LogCat У меня есть следующий вывод:

02-02 09:18:06.044: WARN/WindowManager(1300): MyActivity freeze timeout expired. 

02-02 09:18:06.044: WARN/WindowManager(1300): Force clearing freeze: AppWindowToken{4515af88 token=HistoryRecord{44f52458 com.project.package/.MyActivity}} 

02-02 09:18:08.054: WARN/WindowManager(1300): Window freeze timeout expired. 

02-02 09:18:08.054: WARN/SurfaceFlinger(1300): timeout expired mFreezeDisplay=1, mFreezeCount=0 

02-02 09:18:08.054: WARN/WindowManager(1300): Force clearing orientation change: Window{45178a00 com.project.package/com.project.package.Activity paused=false} 

Я не знаю, почему это происходит. Спасибо за комментарии, предложения, ответы.

+2

Можете ли вы разместить свои 'onCreate' &' onResume'? – xil3

+3

Если активность начинается сначала с первого раза, а затем зависает после изменения ориентации, это может также быть чем-то вроде разрыва активности. Возможно, было бы полезно увидеть методы 'onPause' или другой« конец жизненного цикла », если они у вас есть. –

ответ

3

Спасибо за комментарии, извините за поздний ответ.

Проблема заключалась в большом, очень большом списке, который у меня есть в моем приложении (около 2000 строк в ListView). Если я не рисую этот список, приложение в порядке.

Это понятно, 2000 строк, каждый со значком и текстом, слишком много !.

Итак, я решил реализовать индекс или очень интеллектуальный список Android-рынка (этот список замечательный, не проиндексирован, а только рисует строки, которые вы близко видите).

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

Я попытался очистить список в onPause(), но это не решит проблему.

В любом случае проблема была: слишком много Просмотр объектов в Activity. решение для меня: используйте индексированный список (не используйте для просмотра объектов в Activity).

Надеюсь, это будет полезно для других людей.

+2

Не совсем понятно, но вы используете 'ListView'? Если это так, вы должны использовать «ListAdapter» и позволить Android запрашивать создание и повторное использование элементов списка, когда это необходимо. Это позволит сэкономить ресурсы и сделать приложение более отзывчивым. – RivieraKid

+0

Это именно то, что я делаю. Спасибо за комментарий. – forumercio

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