Можно ли контролировать приоритет интернет соединения в приложении?
Например есть два activity A и B, и есть медленное интернет-соединение скоростью 8 Кбайст\сек.
Загружаем activity A, получаем от сервера массив с ссылками на изображения которые нужно загрузить в activity A, нарисовали (уже загрзилось все кроме изображений) структуру активити, листаем экран, в этот момент по очереди грузятся куча картинок, выбираем какайлибо элемент и загружается activity B, при этом activity A осталось в фоне. Activity B тоже имеет кучу картинок и хочет их загрузить, но неможет, т.к. весящее в фоне activity A еще грузит оставшиеся незагруженные картинки, и нам нужно ждать пока activity B начнет грузить свои изображения, это очень долго при медленном соединении и занимает много времени. Как выкрутиться из такой ситуации?
Нажно чтоб находясь в activity B, весь приоритет соединения передался именно на него, чтобы в activity A на тот момент пока оно в фоне перестало все грузиться....
Или можно только прихлопнуть task который грузит картинки по очереди в activity A перед открытием activity b? (если это выход из положения, то как правильно убить task?)
Приоритет интернет соединения
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Приоритет интернет соединения
Прихлопывать не желательно. Обычно использую специальную булевую переменную отвечающую за остановку этого таска. В цикле загрузки устанавливается дополнительное условие на истинность этой переменной. Если переменная ложь, загрузку нужно остановить. Останавливать загрузку лучше в onStop, а возобновлять в onStart.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.
Re: Приоритет интернет соединения
А как именно саму загрузку остановить/возобновить не убив task?KamiSempai писал(а): Если переменная ложь, загрузку нужно остановить. Останавливать загрузку лучше в onStop, а возобновлять в onStart.
- KamiSempai
- Сообщения: 1339
- Зарегистрирован: 17 фев 2012, 21:23
- Откуда: Мордор
Re: Приоритет интернет соединения
Можно сделать лок при помощи synchronised и методов wait() и notify(): http://crypto.pp.ua/2010/06/instrukciya ... ed-v-java/sanu0074 писал(а):А как именно саму загрузку остановить/возобновить не убив task?
PS: По поводу остановки я тупанул немного. В AsyncTask можно не создавать переменной, там есть метод cancel для остановки и метод isCancelled() для проверки. Сам AsyncTask не остановится, нужно обязательно проверять при помощи isCancelled и останавливать его самому. В Thread есть аналогичные методы interput и isInterputed.
Но для паузы лучше сделать доп переменную.
В идеале при паузе activity делать паузу загрузки, а при onDestroy остановку. Естественно, при остановке нужно будет не забыть сделать notify потоку, а иначе он так и будет в паузе даже после вызова cancel.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.
Хватит таскать макулатуру на тренировку! Используй T Note.