android - 如何使用 rx java 的间隔进行后台任务

标签 android rx-java rx-android

根据 https://github.com/ReactiveX/RxAndroid/issues/257#issuecomment-164263215 . interval 仅针对 Activity 代码,如果应用程序未被唤醒,它将不起作用。那么如何使用interval进行后台调度任务呢?

最佳答案

请不要使用此解决方案:

要在 RxJava 中使用 interval,您必须确保您的应用进程保持 Activity 状态。一种方法是在 foreground service 中使用 Observable .这是个坏主意,因为服务是 NOT actively delivering value to the user .等待时间过去并不能为用户提供值(value)。再次请不要使用它。

AlarmManagerJobScheduler (或者它的 backport GcmNetworkManager )是重复后台 Activity 的更好选择。如果您使用 AlarmManager.setInexactRepeating(),系统可以将来自多个应用程序的作业一起批处理以节省电量。使用 JobScheduler 使您能够在特定条件下执行后台作业,例如。当设备连接到互联网或电池电量超过 20% 时。 (需要互联网才能查看天气)。

RxJava 中的

interval 在 Android 上确实有它的用法。对于相对较短的持续时间,它是 Runnable.postDelayed 的绝佳替代品。它使代码更短,更易读。

关于android - 如何使用 rx java 的间隔进行后台任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34252772/

相关文章:

Android - 停止广播接收器被服务杀死

Android - 将代码添加到 fragment

java - RXJava 2 多个订阅者轮询

java - RxJava 并发修改异常

android - RXJava/RXAndroid - 无法在尚未调用 Looper.prepare() 的线程内创建处理程序

Android WebView 即时崩溃与 shouldInterceptRequest 覆盖

android - launchMode singleTask 中的 Activity 在通过 TaskStackBuilder 启动时被销毁

java - RxJava 条件中断链

java - 出错后重启 BehaviorSubject

java - RxJava : Merged observable calls onComplete spuriously