Об уведомлении «Принудительно закрыть / подождать» - PullRequest
1 голос
/ 03 июня 2011

У меня есть приложение со списком, которое загружает изображения на лету.Это очень маленькие изображения, и они сохраняются после загрузки.Однако, если у пользователя очень медленное соединение (и я имею в виду очень медленное), оно отстает, и пользователю предлагается «Принудительно закрыть или подождать?»диалоговое окно.

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

Ответы [ 3 ]

5 голосов
/ 03 июня 2011

Вы получаете диалог ANR (application not responding), потому что вы блокируете поток пользовательского интерфейса. ЭТО ПЛОХО! Выполняйте все свои долгосрочные задачи (, например, сеть или файл ввода-вывода ) в отдельном потоке, скажем AsyncTask.

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

Предлагаем вам поискать Безболезненная резьба и Многопоточность

2 голосов
/ 03 июня 2011

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

0 голосов
/ 03 июня 2011

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

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

...