Java 可观察计时器-时间延迟不准确
我在使用Observable.timer对象产生延迟时遇到了一个问题(Android平台,Java语言):compileSdkVersion 23,buildToolsVersion“23.0.3” 我想在活动按钮上设置onclick侦听器。按下按钮时,它应该扫描周围的信标(playBeaconScan()),然后设置一个20秒(20000毫秒)的计时器来停止进程 更准确地说,这一过程产生了两种可能的结果:Java 可观察计时器-时间延迟不准确,java,android,timer,rx-java,Java,Android,Timer,Rx Java,我在使用Observable.timer对象产生延迟时遇到了一个问题(Android平台,Java语言):compileSdkVersion 23,buildToolsVersion“23.0.3” 我想在活动按钮上设置onclick侦听器。按下按钮时,它应该扫描周围的信标(playBeaconScan()),然后设置一个20秒(20000毫秒)的计时器来停止进程 更准确地说,这一过程产生了两种可能的结果: 如果在20秒延迟之前找到信标,监听器(ListentScan)将替换为其他内容->此操
- 如果在20秒延迟之前找到信标,监听器(ListentScan)将替换为其他内容->此操作正常
- 如果20秒后未找到信标,则触发Observable.timer,从而停止信标扫描过程(调用stopBeaconScan)
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 ...
你使用的是什么版本的rxjava?编译'com.netflix.rxjava:rxjavaandroid:0.20.5'你使用的是一个非常旧的版本。请改用
io.reactivex:rxandroid:1.2.0
。您解决了它,谢谢!我可能也会删除这个问题,但我建议将rx版本作为解决方案进行检查,它也可以帮助其他人。您使用的rxjava版本是什么?编译'com.netflix.rxjava:rxjava android:0.20.5'您使用的是非常旧的版本。请改用io.reactivex:rxandroid:1.2.0
。您解决了它,谢谢!我可能也会删除这个问题,但我建议发布rx版本应该作为解决方案进行检查,它也可以帮助其他人。