Способы загрузки растрового изображения / рисования для просмотра асинхронных в Android - PullRequest
0 голосов
/ 19 сентября 2011

У меня есть активность, которая должна сделать много вещей, прежде чем она станет видимой.В процессе загрузки представления мне нужно загрузить растровое / рисованное изображение, которое занимает некоторое время и предотвращает другие действия, которые могут быть выполнены в это времяПоэтому я решил перенести его в другой поток.Я использовал Async Task, но это не совсем надежный способ загрузки вещей.Есть ситуации, когда задание начинается через 1-2 секунды после того, как отображается мой вид!Есть ли другой способ загрузить растровое / рисованное изображение, которое не займет так много времени и позволит назначить его в ImageView?

Ответы [ 2 ]

1 голос
/ 19 сентября 2011

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

Если задача занимает много времени для выполнения, то загружаемые вами растровые изображения могут быть слишком большими, и в этом случае вы должны посмотреть на понижающую дискретизацию загружаемых изображений, используя inSampleSize опция с BitmapFactory.

0 голосов
/ 19 сентября 2011

AsyncTask запускает задачи из пула потоков, который, возможно, уже полностью используется, поэтому может потребоваться держать задачи в очереди до тех пор, пока поток не освободится для запуска новой задачи. Хотя я сомневаюсь, что это является причиной проблемы.

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

Редактировать

вы также можете использовать task.get (); после запуска всех других задач дождаться завершения загрузки растрового изображения, прежде чем что-либо показывать ... но постарайтесь, чтобы пользовательский интерфейс отвечал!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...