0

У меня есть активность Android, которая создает пользовательские виды, и это дорогостоящий процесс. Я пытался использовать обработчик, но когда я это делаю, диалог прогресса, который показывает, вращается как раз каждые 5 секунд. Поэтому я попытался использовать AsyncTask. Теперь прогрессDialog вращается, но потом он падает, потому что ему не разрешено загружать пользовательский интерфейс? Как я могу это сделать без получения 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

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

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

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

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

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

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

+0

http://quickupload.net/tqfq8ir8nv6g/add_providers-quickupload.net.trace.html Я понятия не имею, как это прочитать! Почему я не могу вертикально расширить красочную часть? Кроме того, я понятия не имею, что важно, что искать или что делать, когда я его нашел. –

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