Как загружать сложные виды одновременно - PullRequest
0 голосов
/ 11 августа 2010

У меня есть активность Android, которая создает пользовательские представления, и это дорогостоящий процесс. Я пытался использовать обработчик, но когда я это делаю, диалоговое окно прогресса отображается примерно раз в 5 секунд. Поэтому я попытался использовать AsyncTask. Теперь progressDialog вращается, но затем падает, потому что ему не разрешено загружать пользовательский интерфейс? Как я могу сделать это, не получая ANR?

08-10 19:28:21.313: ERROR/AndroidRuntime(1428): Caused by: android.view.ViewRoot$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.

1 Ответ

1 голос
/ 11 августа 2010

У меня есть активность Android, которая создает пользовательские представления, и это дорогостоящий процесс.

Используйте Traceview или другие инструменты для улучшения вашей производительности. Создание пользовательских представлений не является дорогостоящим.

Итак, я попытался использовать AsyncTask. Сейчас ProgressDialog вращается, но потом падает, потому что это не разрешено загрузить пользовательский интерфейс?

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

Как я могу сделать это, не получая ANR?

Я бы сфокусировался на исправлении вашей проблемы с производительностью, используя Traceview или другие инструменты, чтобы понять, на что тратится ваше время.

...