Палач
Объект, который выполняет представленные Runnable задачи. Этот интерфейс позволяет отделить представление задачи от механизма выполнения каждой задачи, включая сведения об использовании потоков, планировании и т. Д. Обычно вместо создания потоков используется исполнитель. Например, вместо того, чтобы ссылаться
new Thread(new RunnableTask()).start()
для каждого набора задач вы можете использовать:
executor.execute(runnable);
В библиотеках подкачки цель состоит в том, чтобы делать все асинхронно.
Исполнитель может помочь вам в этом, вставлять и извлекать данные асинхронно легко, без использования потоков вообще.
Если вы разрабатываете приложение с архитектурой MVVM, вполне возможно, что у вас есть некоторый класс «хранилище», который обрабатывает данные локально и / или вызовы сетевого API. В этом случае рекомендуется запросить базу данных у исполнителей.
Вы также можете использовать исполнителя для наблюдения за постраничным списком, если вы хотите что-то сделать не в главном потоке при изменении данных.
В вашем конкретном случае вам может не понадобиться исполнитель внутри ваших
DataSource
и
DataSourceFactory
.
это зависит от того, что вы делаете в этих классах.
Если вы извлекаете данные из сети, есть много библиотек, таких как
volley и
retrofit2 , которые выполняют http-вызовы асинхронно, поэтому нет необходимости в исполнителе.
При извлечении данных из локальной БД, например Room :
«Из коробки» не поддерживает доступ к базе данных в главном потоке, поэтому исполнитель находится там, чтобы обеспечить выполнение работы в отдельном потоке. ссылка
Надеюсь, вы найдете мой ответ полезным.