使用Observable.timer对象产生延迟时遇到问题(Android平台,Java语言):compileSdkVersion 23,buildToolsVersion" 23.0.3"
我想在活动按钮上设置一个onclick监听器。按下按钮时,它应扫描它周围的信标(playBeaconScan()),然后设置20秒(20000毫秒)的计时器以停止该过程。
更确切地说,这个过程产生两种可能的结果:
这里的问题是20秒延迟不受尊重。实际上,计时器事件几乎总是在之前触发(范围是5-20秒,平均值是10秒)。
我怀疑这个问题是通过使用Schedulers.io作为执行线程来创建的,但是这是我认为最适合用例的问题(虽然我不是这方面的专家)。
非常感谢您提供的帮助。
以下代码详情:
public class BeaconsScanActivity extends AppCompatActivity {
// ... some class fields
// listener to rescan
private View.OnClickListener listenToScan = (v-> {
Log.d("DelayTest", "onClickBeaconScan");
// launch scan process
playBeaconScan();
// Launch timer
Observable.timer(20000 , TimeUnit.MILLISECONDS, Schedulers.io())
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe( l -> {
Log.d(LOG_TAG,"Timer finished");
stopBeaconScan();});
});
// ... class methods ...