RxJava。如何在后台设置 Observable 计时器 运行?

RxJava. How do I make the Observable timer run in the background?

我需要确保按下一个按钮后,另一个按钮在 15 分钟内不可用。为此,我使用了这样的方法:

disposableTimer = Observable.timer(15,TimeUnit.MINUTES)
                            .subscribeOn(Schedulers.io())
                            .observeOn(Schedulers.io())
                            .subscribe(aLong -> {
                                  buttonSimpleAct.setEnabled(true);
                            });

这在程序处于活动状态时效果很好,但我需要这个计时器即使在程序关闭时也能工作。 也就是说,如果按下第一个按钮,应用程序关闭并在 15 分钟后返回,则第二个按钮应该已经处于活动状态。

是否有任何方法可以让 Observable 在后台工作,或者替代方法?

我要做的是(以持久的方式)保存应该重新启用按钮的时间戳,并在应用程序返回时用剩余时间重新启动计时器。

// when the first button is clicked:
long reenableAfter = System.currentTimeMillis() + 15 * 60 * 1000L;
save(reenableAfter);

disposableTimer = Observable.timer(15 ,TimeUnit.MINUTES, AndroidSchedulers.mainThread())
    .subscribe(aLong -> buttonSimpleAct.setEnabled(true));
// when the app starts
long reenableAfter = load();

disposableTimer = Observable.timer(reenableAfter - System.currentTimeMillis(),
          TimeUnit.MILLISECONDS, AndroidSchedulers.mainThread())
    .subscribe(aLong -> buttonSimpleAct.setEnabled(true));