Я бы хотел, чтобы появилось сообщение Toast Message, пока мое приложение загружает информацию, но даже если я помещаю его перед моим кодом, оно не появляется до тех пор, пока загрузка не будет завершена. Помещение моего кода в отдельный поток вызывает много головных болей, но тост в отдельном потоке тоже не работает. Есть ли в любом случае, я могу получить это сообщение Toast перед этим или мне просто придется работать через головные боли?Toast Immediately
ответ
В любом случае вы должны помещать асинхронные загрузки в отдельный поток, чтобы не отключать пользовательский интерфейс основного потока. Когда вы вызываете метод блокирующего ввода-вывода, пользовательский интерфейс не будет отвечать.
Ознакомьтесь с этой документацией по адресу Handling Expensive Operation in the UI Thread.
Я знаю, но Java имеет метод paintImmediatly, который вы можете использовать, если вам нужно что-то нарисовать, даже если поток пользовательского интерфейса блокируется. – Mitchell
@Mitchell: Проблема в том, что если поток пользовательского интерфейса слишком долго (я считаю, 5 секунд), Android предполагает, что ваше приложение заморожено и отображает диалог ANR пользователю. Вы действительно этого не хотите. –
Я не знал, что это было причиной этого. Таким образом, я предполагаю, что точка является спорной. Всем спасибо! – Mitchell
Поскольку magaio уже сказал, что вы должны использовать другой поток для загрузки материала. Мои два цента:
- использование прогресса диалог вместо Тост так Пользователь может реально увидеть процесс
- Используйте AsyncTask для загрузки обновления прогресса так что пользователь может реально увидеть прогресс
Это название, конечно, привлекло мое глаз по всем неправильным причинам. –
Мне жаль, что я не мог сразу же получить хлеб. Ты не одинок. – Mitchell