首页 > 解决方案 > 如何在android O及以上版本中向服务器发出重复的后台请求

问题描述

我有一个应用程序每 30 秒向服务器发出一次请求。我使用服务来实现它。将目标版本更改为26后,服务停止在后台工作。现在我使用 ContextCompat.startForegroundService(context, startIntent) 启动服务,但这种方法需要在状态栏中显示通知。WorkManager 没有帮助我,因为它的最短时间为 15 分钟。有什么方法可以在不显示通知的情况下每 30 秒发出一次后台请求?

标签: androidserviceandroid-workmanager

解决方案


您可以使用 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) {}
                })

推荐阅读