2012-05-10 3 views
1

У меня много просмотров в моем приложении, которое занимает много времени во время запуска. Я использую эмулятор, и для отображения экрана требуется примерно 15 секунд. После этого приложение работает нормально.загрузка просмотров в asynctask

Я попытался реализовать asynctask для просмотра загрузки, но я получаю ошибки. Документация на Android утверждает, что я не должен настраивать представления за пределами потока пользовательского интерфейса. Но это не говорит, я не могу.

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

Или мне нужно настроить все мои представления в onPostExecute(), прежде чем вызывать диалог увольнения. Но это все равно заморозит поток пользовательского интерфейса за это время. И я буду в том же положении.

Я не тестировал устройство, но знаю, что если поток пользовательского интерфейса заблокирован более 5 секунд, он отображает диалоговое окно приложения, не отвечающее на запросы. Я хочу предотвратить это.

Я нацеливаюсь на SDK 10. Кроме того, это произойдет в то же время, когда он работает на самом устройстве. Приложение предназначено для заметок галактики Samsung, что довольно быстро.

P.S. Мой интернет по-прежнему с 3-х дней. Я использую мой мобильный клиент и повторно загружаю в офлайн-документы SDK.

ответ

1

Прямо из документации:

«Вы должны всегда быть в потоке пользовательского интерфейса при вызове любого метода на любом виде Если вы делаете работу над другими потоками и хотите обновить состояние зрения, с. этот поток, вы должны использовать обработчик ».

Ваша логика вашего представления должна быть в потоке пользовательского интерфейса.

http://developer.android.com/reference/android/view/View.html

Что касается экрана «загрузки»:

Попытка отделить логику, не смотри, связанные и сделать это в фоновом потоке, если вы можете. Вы можете обновить индикатор выполнения с помощью AsyncTask. Переопределите onProgressUpdate() и вызовите publishProgress() из вашего doInBackground(), если вы хотите обновить прогресс. Или вы можете просто использовать неопределенный прогресс. Вам решать.

+0

На самом деле, большинство вещей связаны с видами. Существует некоторый код, который можно отфильтровать, но он очень маленький. –

+0

Подготавливает ли обработчики событий для просмотров также поток пользовательского интерфейса, возможно, я могу их отфильтровать. –

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