Как открыть действие мгновенно, а затем загрузить его макет - PullRequest
1 голос
/ 04 августа 2011

Вот в чем дело: у меня тяжелый макет, который не может быть улучшен дальше, так как он содержит LinearLayouts с весами (поэтому я не могу использовать RelativeLayouts). В действии A я нажимаю на элемент списка, который запускает действие B. Действие A останавливается до тех пор, пока действие B не будет полностью загружено , затем отображается действие B. Итак, это полная очередь событий:

  1. Задание A: открыть B
  2. Задание A: зависает
  3. Операция B: завершает инфляцию / setContentView
  4. Задание A: возврат в стек приложений
  5. Деятельность B: показывается

Как мне немедленно показать действие B , чтобы действие A не зависало? Я думал о надувании временного макета в B, но мне нужен метод обратного вызова, который сообщает мне, что B полностью виден, и я могу затем заменить временный макет на real .

Кто-нибудь может мне помочь? Спасибо!

Не по теме: инфляция компоновки в Android - это настоящая боль, она не должна блокировать весь пользовательский интерфейс, но это так. То же самое для настройки списка адаптеров.

Ответы [ 2 ]

0 голосов
/ 04 августа 2011

Вы можете загружать много времени, используя AsyncTask . Вы можете использовать

 doInBackgroundMethod to load the data
 onProgressUpdate you can bind your layout to data.

Если вы работаете таким образом, ваша деятельность не будет заморожена

0 голосов
/ 04 августа 2011

Вы должны потратить время на выполнение задания из раздела B в потоке, а если вам нужно обновить пользовательский интерфейс после завершения задания, выполните это с помощью обработчика.

...