2017-08-23 42 views
0

我的一个应用程序功能旨在在5分钟后超时(以防止用户意外启用它)。当Android设备被锁定时,RxJava间隔和超时会偶尔停止

活动显示一个倒数计时器,该计时器由Observable.interval()更新,功能超时通过Observable.timeout()执行。

偶尔当倒计时正在运行,并且用户锁定设备,​​将停止发射和timeout()不会抛出它的超时异常。当设备解锁并且活动再次处于前台时,最终timeout将在不确定的时间量之后发出异常。

this SO post中建议interval只适用于“活动代码”,所以我认为这是我遇到的问题。

是否有简单的解决方案,可以让我继续使用RxJava进行超时和倒计时,还是我需要寻找其他解决方案,如AlarmManager?有什么特别的Scheduler来拯救?

+0

关于最后一个问题,请查看[Job scheduler](https://developer.android.com/topic/performance/scheduling.html)。你必须展示一些代码。 – masp

回答

-1

您可以使用

.subscribeOn(Schedulers.newThread()) 

但是,你需要确保你正确地取消,而不是克隆多个观测。

+0

没有意义。这意味着他创建了一个新的线程,并超时。唯一的解决方案是使用唤醒锁或者他已经说过的应该是安全策略的警报管理器。 –

相关问题