Android 周期性任务每 5 分钟一次

问题描述

我需要每 5 分钟从我的网络服务下载一些数据(允许用户更改此间隔时间,但最少每 5 分钟一次),并且因为 Android 的 WorkManager 旨在以大于15 分钟后,我想到使用 RxJava Observable.interval 甚至 Handler 及其 postDelayed 方法。

应该在应用程序处于前台或后台时完成工作,但我希望在应用程序关闭时它停止。

我的方法是否正确,或者您是否建议我使用任何其他库?谢谢。

解决方法

您可以使用 Timer 和 TimerTask(您的代码用于下载数据),它们每 5 分钟由 Timer 运行一次。

Timer timer = new Timer();
TimerTask timerTask = new TimerTask() {
    @Override
    public void run(){
        //download data
    }
}
timer.scheduleAtFixedRate(timerTask,300 * 1000);
,

不要轮询会耗尽用户电量的网络服务,而是使用 Firebase 云消息传递:

  1. android 应用启动,可以获得 firebase 令牌
  2. Android 应用程序将此令牌发送到网络服务
  3. 当某些事件触发的网络服务使用令牌向 google firebase 发送推送通知时
  4. google play 服务会使用数据唤醒您的应用。

如果您不能使用 firebase - 唯一的方法是在状态栏中使用带有粘性通知的前台服务,这对用户来说非常烦人。无论如何,即使使用前台服务,如果设备屏幕在如此短的超时时间内关闭,您也将无法工作。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...