【问题标题】:How to call Rxjava fucntion daily on specific time in Android?如何在 Android 中的特定时间每天调用 Rxjava 功能?
【发布时间】:2018-08-29 07:57:14
【问题描述】:

我想使用 rxjava 执行警报类型的任务。我已经在使用 rxjava 间隔运算符,但这要求时间间隔我不想给出时间间隔,而是我想在每天上午 12:00 重复该函数。

这是我的基于间隔的 Rx Observable 代码:

return Observable.interval(delay, TimeUnit.SECONDS).timeInterval()
                .flatMap((Function<Timed<Long>, ObservableSource<CustomTime.TimeTempBuilder>>) longTimed -> getDataManager().getTimeByDate(date));

目的:我每天都在运行前台服务,我必须在特定时间显示通知。

【问题讨论】:

  • 如果您的应用在凌晨 12:00 没有运行怎么办?
  • 我有前台服务在运行,不用担心这个。
  • 你的前台服务可能已经死了。
  • @EpicPandaForce 它是前台服务,它不会死。
  • 我认为你不能以可靠的方式做出这样的假设,但是可以

标签: android rx-java rx-java2 rx-android


【解决方案1】:

你最好不要为此使用 rx。相反,请查看 JobScheduler 或 WorkManager。在使用 rxjava 的情况下,如果主线程将由系统或用户完成,则不会触发您的操作。但是 WorkManager API 为您提供了配置很多选项的能力,包括时间,这表明系统应该何时开始您的工作。

【讨论】:

  • 亲爱的,我已经在问题中提到我正在使用 24/7 不间断运行的前台服务。在我的情况下,使用 Rx 看起来更好。
  • which is running 24/7 without any interruption. 这个有什么保证?您可能需要 evernote/android-job 或手动使用 AlarmManager。
  • @EpicPandaForce 在evernote/android-job 中不需要,因为WorkManager 是一个独立的库
猜你喜欢
  • 2016-08-01
  • 2020-12-16
  • 1970-01-01
  • 2019-09-11
  • 1970-01-01
  • 2011-03-15
相关资源
最近更新 更多