Должен ли я использовать Loader для каждого http-соединения или один Loader для всего этого достаточно? - PullRequest
0 голосов
/ 28 сентября 2018

Я новичок в Android, пытаюсь сделать простое приложение для подачи новостей.Я использую Asynctaskloader для фоновых операций.Сейчас я использую один загрузчик для подключения разных источников новостей.Мой вопрос заключается в том, должен ли я определять и запускать разные загрузчики для каждого источника новостей, или отдельный загрузчик также справится с этим?Я спрашиваю, потому что, когда приложение открывается, загрузка новостей занимает 5-10 секунд (пока я добавил только три источника новостей), может ли это быть из-за использования одного загрузчика?

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Загрузчики хороши своей способностью обрабатывать жизненный цикл, но они не так эффективны, как LiveData и ViewModel.Если вы заботитесь о производительности, скорости и актуальности, используете компоненты архитектуры Android (LiveData, ViewModel), а также вам не нужно придерживаться старой системы действий, вы можете написать несколько простых AsyncTask и обернуть их с помощью ViewModel иLiveData.Это работает как по волшебству и лучше, чем Loaders.Для получения информации о том, как обернуть AsyncTask в LiveData и ViewModel, посетите https://medium.com/androiddevelopers/lifecycle-aware-data-loading-with-android-architecture-components-f95484159de4

0 голосов
/ 28 сентября 2018

Проблема с использованием метода loadInBackground одного загрузчика для обращения к разным источникам данных заключается в том, что такой доступ будет последовательным в пределах связанного потока.Общее время для получения и возврата новостей из N источников будет суммой времени каждого из них, включая задержки или тайм-ауты, при условии, что вы ждете, пока все будет загружено, чтобы продолжить презентацию.

Вы должны рассмотреть больше потоков / загрузчиков или другую стратегию (возможно, выборка 1, показ 1, выборка 2, добавление 2 и т. Д.), Когда пользователь не разочаровывается в ожидании.

...