ANDROID_LIVE Telegram 258
​​RxJava и планировщики
#разработка #начинающим

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

Для начала работы с многопоточностью используются операторы subscribeOn() и observeOn(), а также планировщики (Schedulers).

Например, в приложении есть метод getNames(), который возвращает список имен в приложение с сервера, после чего нам надо показать эти имена в списке. Для того, чтобы выполнить этот запрос в отдельном потоке мы должны использовать оператор subscribeOn() и указать в качестве Scheduler’а Schedulers.io(). Для обработки у нас есть оператор observeOn() с Scheduler’ом AndroidSchedulers.mainThread(), что позволит нам показать эти данные в main-thread.
Кроме этого есть дополнительные Scheduler’ы, которые важно применять с пониманием:
Schedulers.io() — его стоит использовать для операций, которые не связаны с интенсивной нагрузкой на процессор. Он использует неограниченный пул потоков, и количество потоков может расти по мере необходимости. В нашем примере мы использовали его для доступа в сеть. Также, его используют для доступа к файлам, получения информации из базы и прочим подобным операциям.
Schedulers.computation() — его рекомендуют использовать для операций, которые высоко нагружают процессор: обработка изображений, огромный объем данных. Но не стоит слепо ставить его во все запросы: пул у этого планировщика ограничен количеством процессоров на устройстве. Это сделано для того, чтобы отсутствовала конкуренция за ресурсы процессора в случае выполнения нескольких операций.
Schedulers.newThread() — его лучше использовать для операций, которые выполняются долгосрочно в фоне. Стоит также использовать осторожно, потому что создает новый поток при каждой обработке элемента.
Schedulers.single() — его стоит использовать в случае последовательного выполнения задач. Например, если вам важно, чтобы две задачи не выполнялись одновременно в приложении. Тоже не самый частый сценарий.
Schedulers.from(Executor executor) — можно написать собственный Executor и описать логику распределения потоков. Например, вы хотите ограничить количество запросов в сеть или в базу данных. Тогда можно использовать этот планировщик, это значительно упростит задачу.
AndroidSchedulers.mainThread() — используйте его, чтобы выполнить операцию в main-thread. В нашем примере — это показ списка имен на экран.

Важно правильно применять Scheduler’ы для каждой операции, так как их неверное применение может привести к росту числа потоков и замедлению приложения.

Надеюсь, что эта шпаргалка поможет лучше понимать логику работы с Scheduler в RxJava.
👍1



tgoop.com/android_live/258
Create:
Last Update:

​​RxJava и планировщики
#разработка #начинающим

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

Для начала работы с многопоточностью используются операторы subscribeOn() и observeOn(), а также планировщики (Schedulers).

Например, в приложении есть метод getNames(), который возвращает список имен в приложение с сервера, после чего нам надо показать эти имена в списке. Для того, чтобы выполнить этот запрос в отдельном потоке мы должны использовать оператор subscribeOn() и указать в качестве Scheduler’а Schedulers.io(). Для обработки у нас есть оператор observeOn() с Scheduler’ом AndroidSchedulers.mainThread(), что позволит нам показать эти данные в main-thread.
Кроме этого есть дополнительные Scheduler’ы, которые важно применять с пониманием:
Schedulers.io() — его стоит использовать для операций, которые не связаны с интенсивной нагрузкой на процессор. Он использует неограниченный пул потоков, и количество потоков может расти по мере необходимости. В нашем примере мы использовали его для доступа в сеть. Также, его используют для доступа к файлам, получения информации из базы и прочим подобным операциям.
Schedulers.computation() — его рекомендуют использовать для операций, которые высоко нагружают процессор: обработка изображений, огромный объем данных. Но не стоит слепо ставить его во все запросы: пул у этого планировщика ограничен количеством процессоров на устройстве. Это сделано для того, чтобы отсутствовала конкуренция за ресурсы процессора в случае выполнения нескольких операций.
Schedulers.newThread() — его лучше использовать для операций, которые выполняются долгосрочно в фоне. Стоит также использовать осторожно, потому что создает новый поток при каждой обработке элемента.
Schedulers.single() — его стоит использовать в случае последовательного выполнения задач. Например, если вам важно, чтобы две задачи не выполнялись одновременно в приложении. Тоже не самый частый сценарий.
Schedulers.from(Executor executor) — можно написать собственный Executor и описать логику распределения потоков. Например, вы хотите ограничить количество запросов в сеть или в базу данных. Тогда можно использовать этот планировщик, это значительно упростит задачу.
AndroidSchedulers.mainThread() — используйте его, чтобы выполнить операцию в main-thread. В нашем примере — это показ списка имен на экран.

Важно правильно применять Scheduler’ы для каждой операции, так как их неверное применение может привести к росту числа потоков и замедлению приложения.

Надеюсь, что эта шпаргалка поможет лучше понимать логику работы с Scheduler в RxJava.

BY Android Live 🤖




Share with your friend now:
tgoop.com/android_live/258

View MORE
Open in Telegram


Telegram News

Date: |

The imprisonment came as Telegram said it was "surprised" by claims that privacy commissioner Ada Chung Lai-ling is seeking to block the messaging app due to doxxing content targeting police and politicians. Deputy District Judge Peter Hui sentenced computer technician Ng Man-ho on Thursday, a month after the 27-year-old, who ran a Telegram group called SUCK Channel, was found guilty of seven charges of conspiring to incite others to commit illegal acts during the 2019 extradition bill protests and subsequent months. Write your hashtags in the language of your target audience. Although some crypto traders have moved toward screaming as a coping mechanism, several mental health experts call this therapy a pseudoscience. The crypto community finds its way to engage in one or the other way and share its feelings with other fellow members. Content is editable within two days of publishing
from us


Telegram Android Live 🤖
FROM American