
Nikita
15.08.2016
09:11:19

Mukhamed
15.08.2016
09:11:55

Nikolay
15.08.2016
09:12:06

Mukhamed
15.08.2016
09:13:17
Для скачки чего-либо лучше использовать Service?
Сервисы нужно для того, чтобы делать какие-либо задачи в фоне приложения, то есть сервисы не зависят от жизненного цикла Activity например. В качестве примера можно привести сервис для сообщений, он может работать в фоне даже когда запущено другое приложение и уведомлять о новых сообщениях

Google

Yura
15.08.2016
09:14:19
Подождите, подождите. Может я не правильно сделал. Я запускаю asynctask, передал какие-то простые параметры, не callback-и и всё, а в onPost уже (в 99% случая) - у меня есть система такая event-ов, этот эвент прилетает в активити (эвент может получить кто угодно) и уже в активити (мой наследник) смотрится, а жива активити или нет...

Mukhamed
15.08.2016
09:14:19
И да, Loaders эффективны при сменах конфигурации, т.е смена ориентации экрана и т.д

Nikolay
15.08.2016
09:15:40

Yura
15.08.2016
09:16:59
Никаких callback у меня нет, есть система эвентов, на неё кто угодно может подписаться и отписаться, соответ. моя активити в onCreate подписывается, onDestroy отписывается и поэтому если она умрет просто к ней ничего не прилетит

Nikolay
15.08.2016
09:17:33
тогда должно все норм работать в теории.

Yura
15.08.2016
09:17:44
ну и само собой обрабатывается эвент в runOnUiThread

Mukhamed
15.08.2016
09:18:00

Yura
15.08.2016
09:18:03
я просто давно выбрал такой метод, может он и не прозрачен, зато работает хорошо
нет, самописное - есть статический класс, который подписывается, отписывается на события

Nikolay
15.08.2016
09:19:36
Самописный Observable получается?

Yura
15.08.2016
09:20:09
т.е. в этом классе я просто говорю, вот тебе callback, и если кто-то дернет interface, который реализует этот callback, ты меня вызови и уже моя головная боль, как я его обработаю

Mukhamed
15.08.2016
09:20:46
Самописный EventBus получается)

Yura
15.08.2016
09:20:47
наверно да, я просто rx никогда не пользовался

Google

Yura
15.08.2016
09:20:55
ну не совсем
я пользуюсь и Ioc
но просто, чтобы разнести определенные вещи и можно было классы использовать и в самом приложении и в java-тестах
может я что-то не допонимаю, но вроде в Ioc отписаться быстро нельзя

Nikita
15.08.2016
09:25:07
Мне кажется лоадеры в этом случае использовать удобнее
Они прозрачнее
И код чище

Nikolay
15.08.2016
09:26:17

Nikita
15.08.2016
09:26:28
Надо будет как приду домой, с лоадерами поэкспериментировать

Mukhamed
15.08.2016
09:26:29
Просто изначально даже обычные потоки могут быть хорошим решением, так как все работает же. Но уже когда у приложения более миллиона пользователей в месяц, приходится отбросить все "и так сойдет")

Nikita
15.08.2016
09:27:00

Mukhamed
15.08.2016
09:27:30
Поэкспериментируй) так как у всех способов есть как и плюсы так и минусы)

Nikita
15.08.2016
09:27:46
Так что лучше? Асинктаск с эвентами?
@yshinkarev , можно ссылку на гитхаб?

Yura
15.08.2016
09:28:34
это порой сложно сделать (сразу хорошо) в силу ограниченности по времени или просто отсутствия уверенности, что проект будет продолжен и надо сделать быстро, чтобы работало (чисто пруф концепт)

Nikolay
15.08.2016
09:29:14
Все зависит от конкретной задачи.

Yura
15.08.2016
09:29:27
Никита нет, это же проект, за который мне платят деньги, я даже подписывал документ

Nikita
15.08.2016
09:29:34
Речь о том, что если у тебя есть и время и прочее

Nikolay
15.08.2016
09:29:36
Лоадеры нельзя использовать в сервисе.

Alexey
15.08.2016
09:29:43

Google

Alexey
15.08.2016
09:29:54
DownloadService

Nikita
15.08.2016
09:30:05

Alexey
15.08.2016
09:30:16
кстати почему все про него умалчивают и не используют? Есть какие-то подводные камни?

Yura
15.08.2016
09:30:25
не могу

Mukhamed
15.08.2016
09:30:35

Alexey
15.08.2016
09:31:16
Loader?
https://developer.android.com/reference/android/app/DownloadManager.html

Yura
15.08.2016
09:31:17
тем более я считаю, что если брать и использовать чужой код, то только у больших профессионалов, а я к таким не отношусь :)

Alexey
15.08.2016
09:31:47
Loader?
в системе есть сервис который специально для загрузки файлов, DownloadManager умеет ему передавать задачи на загрузку файлов

Nikita
15.08.2016
09:31:51
не могу
Ладно. По идее реализация примитивная

Alexey
15.08.2016
09:33:14
@LionZXY возможно тебе подойдёт DownloadManager. Отправляет файл на загрузку и в нотификейшен баре у тебя прогрес этой загрузки показывается

Mukhamed
15.08.2016
09:33:32

Alexey
15.08.2016
09:33:41

Nikita
15.08.2016
09:33:44

Alexey
15.08.2016
09:34:24

Nikita
15.08.2016
09:34:28

Nikolay
15.08.2016
09:34:44
Retrofit мб? С асинхронными вызовами

Alexey
15.08.2016
09:34:52

Google

Nikita
15.08.2016
09:35:32

Mukhamed
15.08.2016
09:35:59
Просто при загрузке нужно учитывать много вещей)
А что если кто-то сменит ротацию экрана
А что если активити уйдёт в фон
В обеих случаях AsynkTask проигрывает Loadery

Alexey
15.08.2016
09:36:16
Почему?
проблемы при поворотах экранов
ну да, как Mukhamed Issa написал всё так и есть

Nikita
15.08.2016
09:36:38
А что насчет AsyncTaskLoader?

Alexey
15.08.2016
09:37:11

Nikolay
15.08.2016
09:37:17
Запросы на загрузку последовательны или параллельны?

Mukhamed
15.08.2016
09:37:21
Это и есть Loader)
Только его вид

Alexey
15.08.2016
09:37:57

Nikolay
15.08.2016
09:38:00

Mukhamed
15.08.2016
09:38:40

Nikolay
15.08.2016
09:39:50
НУ зависит от реализации как бы.
Может это будет наподобии как Picasso грузит для списка. Тогда Лоадеры не катят.

Nikita
15.08.2016
09:40:24
Почему не катят?

Mukhamed
15.08.2016
09:41:19

Nikolay
15.08.2016
09:41:35
Callback лоадеров. Он там по id хэндлит. С этим сложности будут. Куда и что грузить и показывать

Nikita
15.08.2016
09:42:24

Mukhamed
15.08.2016
09:42:56

Google

Mukhamed
15.08.2016
09:43:47
Тогда наверное Thread pool асинктасками сделать

Nikita
15.08.2016
09:44:03
Executor - обычный среад
А лоадер может несколько раз колбечить?

Nikolay
15.08.2016
09:45:30
В теории да. Но передавая каждый раз другой id

Mukhamed
15.08.2016
09:46:09
Но лучше этого не делать)

Nikita
15.08.2016
09:48:50
В один лоадер же можно засунуть много асунктасков?
Вот есть список из 1к песен
Для каждой нужно отдельно каждый раз обращаться на сервер
Что лучше использовать?
Причем с максимальным колбеком
Т.е. получил название песни - сразу отдал

Mukhamed
15.08.2016
09:53:59
Использовать thread pool с asyktask

Alexey
15.08.2016
10:03:51
@LionZXY если 1к песен, то постраничная загрузка, ты же все сразу всё равно юзеру не покажешь

Nikita
15.08.2016
10:14:16

Alexander
15.08.2016
11:11:14
Да все верно зачем грузить все сразу )) делай ленивую загрузку. Все что загрузил все равно в адаптаре будет закэшированно. Можно и без лоудера обойтись
И зачем вообще использовать асинктаски?
Самый просто вариант взять volley
RecyclerView + Volley
ленивую загрузку в наследник от RecyclerView.OnScrollListener
А зачем асинктаск вы как на сервер обращаться хотите ?