问题描述
我需要每 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 云消息传递:
- android 应用启动,可以获得 firebase 令牌
- Android 应用程序将此令牌发送到网络服务
- 当某些事件触发的网络服务使用令牌向 google firebase 发送推送通知时
- google play 服务会使用数据唤醒您的应用。
如果您不能使用 firebase - 唯一的方法是在状态栏中使用带有粘性通知的前台服务,这对用户来说非常烦人。无论如何,即使使用前台服务,如果设备屏幕在如此短的超时时间内关闭,您也将无法工作。