2016-03-16 6 views
1

Как я могу имитировать поведение Android JobScheduler (или GcmNetworkManager) с помощью RxJava на Android?Reactive JobScheduler

В частности, я хотел бы иметь эту функциональность

  • осведомленности о сетевой активности
  • Автоматическое резервное выключение и отказ затем повторите

Справочная информация: С Android N, изменения подключений не больше транслируется в фоновый поток. Чтобы решить эту проблему, Google предлагает использовать JobScheduler/GcmNetworkManager, но я хотел бы решить ее с помощью RxJava.

ответ

1

Вы НЕ МОЖЕТЕ сделайте это.

С JobScheduler Android проверяет подключение к сети, состояние батареи, состояние зарядки и т. Д. Ваш процесс приложения не должен запускаться. Если условия будут выполнены, Android пробудит ваше приложение. Android также будет работать вместе, экономя батарею.

Чтобы сделать это с помощью RxJava (проверьте наличие сети, аккумулятора), процесс, который вы обрабатываете, должен работать, чтобы вы не экономили аккумулятор.

Как вы можете видеть от issue #16 от JobSchedulerCompat (устаревший), пытающийся подражать JobScheduler на предварительно леллиполе отходы батарея.

+0

У вас нет обертки Rx вокруг планировщика заданий, который будет запускать события (rx-relay)? – ZakTaccardi

+1

Да, вы могли бы @ZakTaccardi, но тогда планировщик заданий обязательно работал бы в то время, когда вы указали, а не, возможно, самое эффективное время для батареи; эти планировщики заданий касаются отказа от контроля за хорошую причину =] Как только в задаче вы, конечно, можете делать то, что вам нравится, возможно, используя RxJava и возвращающийся в OnComplete; через 3 минуты задача закончится независимо. –