根据 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)。再次请不要使用它。
AlarmManager和 JobScheduler (或者它的 backport GcmNetworkManager )是重复后台 Activity 的更好选择。如果您使用 AlarmManager.setInexactRepeating()
,系统可以将来自多个应用程序的作业一起批处理以节省电量。使用 JobScheduler
使您能够在特定条件下执行后台作业,例如。当设备连接到互联网或电池电量超过 20% 时。 (需要互联网才能查看天气)。
RxJava
中的 interval
在 Android 上确实有它的用法。对于相对较短的持续时间,它是 Runnable.postDelayed
的绝佳替代品。它使代码更短,更易读。
关于android - 如何使用 rx java 的间隔进行后台任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34252772/