Как поставить поставить AsyncTask на паузу?

Activity Lifecycle, Saving Activity State, Managing Tasks, Intent, Intent Filter
Ответить
Аватара пользователя
sanu0074
Сообщения: 80
Зарегистрирован: 30 июн 2013, 20:42
Контактная информация:

Как поставить поставить AsyncTask на паузу?

Сообщение sanu0074 » 29 июл 2013, 16:10

У меня есть некоторая проблемка в приложении, нужно поставить AsyncTask на паузу в методе onPause(), когда открывается новое activity.
Я получаю XML от сервера, после разбора каждого узала (их 20шт) в методе onProgressUpdate() извлечонная ссылка на файл передается в мой метод addToBody(), который вызывает AsyncTask загружающий картинку в ImageView. Т.е. после разбора сообщения от сервера, друг за другом запускаются 20 AsyncTask'ов в onProgressUpdate(). Когда не все картинки подгрузились и я тапаю на элемент чтоб открылось новое активити мне надо приостановить загрузку (эти AsyncTask'ки), чтоб в новом открытом активии данные нормально подгрузились (не ожидая пока закончится загрузка в фоновом activity). После того как мы возвращаемся из нового активити в предыдущее, нужно продолжить работу тех 20ти AsyncTask'ов чтоб они прогрузили все картинки в интерфейс.
Я понял что нужно использовать метод onPause(), в котором будут останавливаться AsyncTask'и при переходе в новое активити, и метод onStart() - будет возобновлять загрузку картинок в активити при возврате, но как правильно это сделать? Какими методами пользоваться?

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Как поставить поставить AsyncTask на паузу?

Сообщение rezak90 » 29 июл 2013, 20:50

sanu0074 писал(а):У меня есть некоторая проблемка в приложении, нужно поставить AsyncTask на паузу в методе onPause(), когда открывается новое activity.
Я получаю XML от сервера, после разбора каждого узала (их 20шт) в методе onProgressUpdate() извлечонная ссылка на файл передается в мой метод addToBody(), который вызывает AsyncTask загружающий картинку в ImageView. Т.е. после разбора сообщения от сервера, друг за другом запускаются 20 AsyncTask'ов в onProgressUpdate(). Когда не все картинки подгрузились и я тапаю на элемент чтоб открылось новое активити мне надо приостановить загрузку (эти AsyncTask'ки), чтоб в новом открытом активии данные нормально подгрузились (не ожидая пока закончится загрузка в фоновом activity). После того как мы возвращаемся из нового активити в предыдущее, нужно продолжить работу тех 20ти AsyncTask'ов чтоб они прогрузили все картинки в интерфейс.
Я понял что нужно использовать метод onPause(), в котором будут останавливаться AsyncTask'и при переходе в новое активити, и метод onStart() - будет возобновлять загрузку картинок в активити при возврате, но как правильно это сделать? Какими методами пользоваться?
Нужно реализовать LazyAdapter, вот посмотри тот что у меня в проекте
R.id.team
Политика на форуме запрещена

Аватара пользователя
sanu0074
Сообщения: 80
Зарегистрирован: 30 июн 2013, 20:42
Контактная информация:

Re: Как поставить поставить AsyncTask на паузу?

Сообщение sanu0074 » 29 июл 2013, 22:03

rezak90 писал(а): Нужно реализовать LazyAdapter, вот посмотри тот что у меня в проекте
А можеш раскоментить, что к чему там у тебя? просто я новичек в андроид-разработке, я написал же для чего мне нужно реализовать это....

Аватара пользователя
rezak90
Сообщения: 3422
Зарегистрирован: 26 июн 2012, 13:22
Откуда: UA
Контактная информация:

Re: Как поставить поставить AsyncTask на паузу?

Сообщение rezak90 » 29 июл 2013, 22:59

будет когда то время то распишу =)
если новичёк то тогда не замарачивайся, понять трудно будет... вкратце то создаётся пулл потоков, сохраняется картинка на дивайс, делается проверка если есть картинка на дивайсе то грузится она иначе качается по сети и грузится... в итоге при последующей прокрутки картинки грузятся по локали что очень быстро
R.id.team
Политика на форуме запрещена

Аватара пользователя
sanu0074
Сообщения: 80
Зарегистрирован: 30 июн 2013, 20:42
Контактная информация:

Re: Как поставить поставить AsyncTask на паузу?

Сообщение sanu0074 » 29 июл 2013, 23:04

rezak90 писал(а):будет когда то время то распишу =)
если новичёк то тогда не замарачивайся, понять трудно будет... вкратце то создаётся пулл потоков, сохраняется картинка на дивайс, делается проверка если есть картинка на дивайсе то грузится она иначе качается по сети и грузится... в итоге при последующей прокрутки картинки грузятся по локали что очень быстро
Именно такую вещь и хочу реализовать, я пишу клиент для одного из своих сайтов, если я тебе выложи исходники, сможешь ковырнуть?

Аватара пользователя
Finch
Сообщения: 439
Зарегистрирован: 16 июл 2012, 21:37

Re: Как поставить поставить AsyncTask на паузу?

Сообщение Finch » 30 июл 2013, 00:53

я думаю что не сможет =)
CEO of a company R.id.team

Ответить