android - 如何在android O及以上版本中向服务器发出重复的后台请求
问题描述
我有一个应用程序每 30 秒向服务器发出一次请求。我使用服务来实现它。将目标版本更改为26后,服务停止在后台工作。现在我使用 ContextCompat.startForegroundService(context, startIntent) 启动服务,但这种方法需要在状态栏中显示通知。WorkManager 没有帮助我,因为它的最短时间为 15 分钟。有什么方法可以在不显示通知的情况下每 30 秒发出一次后台请求?
解决方案
您可以使用 RxJava 重复执行任务。
Observable.timer(30, TimeUnit.SECONDS).subscribeOn(Schedulers.io()).repeat()
.observeOn(AndroidSchedulers.mainThread()).subscribe(object : Observer<Long> {
override fun onComplete() {}
override fun onSubscribe(d: Disposable) {}
override fun onNext(t: Long) {
//do your task
}
override fun onError(e: Throwable) {}
})
推荐阅读
- cross-domain - Google Ads gtag.js 转化代码 - 手动将转化链接器跨域参数 (_gl) 添加到网址
- sympy - Sympy简化欧拉公式不起作用
- azure - Django 应用程序“部署成功”到 Azure,但 URL 仅显示默认页面而不是我的代码应用程序
- spring-boot - 如何对 Spring Boot 应用程序的镜像进行 docker 处理?
- azure - 如何将 VMSS 实例计数作为指标?
- database - DBMS_JAVA 无法验证或授权
- r - r:ggplot 将突出显示的注释添加到类别轴
- python - 将 PNG 转换为 Numpy 数组 -> 更改颜色值 -> 组合通道并保存图像
- excel - VLOOKUP 具有多个结果的同一项目
- javascript - 使用 docker-compose 运行 nuxt.js 项目