我正在使用ReactiveLocation库。基本上,我想在4秒内获得一个足够准确的位置。如果在此期间未收到足够精度的位置,但其他位置已返回最高精度的位置。
一旦接收到足够准确的位置,则返回该位置并完成可观测。
我会发布我正在尝试的代码。我可能,也可能,以错误的方式进行。
LocationRequest request = LocationRequest.create()
.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY)
.setFastestInterval(FASTEST_UPDATE_INTERVAL)
.setSmallestDisplacement(MIN_DISTANCE_UPDATE_INTERVAL);
if ( expirationSeconds != null )
request.setExpirationDuration(TimeUnit.SECONDS.toMillis(expirationSeconds));
ReactiveLocationProvider locationProvider = new ReactiveLocationProvider(context);
Observable<Location> observable = locationProvider.getUpdatedLocation(request)
.doOnNext(new Action1<Location>() {
@Override
public void call(Location location) {
if ( mostAccurateLocation == null )
mostAccurateLocation = location;
if ( location.getAccuracy() < mostAccurateLocation.getAccuracy() )
mostAccurateLocation = location;
}
})
.filter(new Func1<Location, Boolean>() {
@Override
public Boolean call(Location location) {
return location.getAccuracy() < sufficientAccuracy ;
}
});
if ( expirationSeconds != null )
observable = observable.timeout( expirationSeconds, TimeUnit.SECONDS, Observable.just(mostAccurateLocation), backgroundThread );
return observable.firstOrDefault(mostAccurateLocation)
.doOnNext(new Action1<Location>() {
@Override
public void call(Location location) {
lastLocation = location;
}
});
好的,我找到问题了。超时开始了,但很明显,超时启动的可观察对象使用了mostAccurateLocation变量,就像创建可观察对象时一样。
为了解决这个问题,我使用了可观察的。延迟模式,这样只会创建可观察的
if ( expirationSeconds != null ) {
Observable<Location> mostAccurateLocationObservable = Observable.defer(new Func0<Observable<Location>>() {
@Override
public Observable<Location> call() {
return Observable.just(mostAccurateLocation);
}
});
observable = observable.timeout( expirationSeconds, TimeUnit.SECONDS, mostAccurateLocationObservable, backgroundThread );
}
我不确定使用不同的调度程序从rxJava链读/写实例变量的安全性。有一个小例子 为了简单起见,让我们假设这三个方法一个接一个地调用 我的问题:在io调度程序中设置变量,然后最近从计算调度程序或主线程中读取该变量是否安全? 我认为这不是线程安全的,但我希望一些rxJava和并发专家来证明这一点
我想在启动脚本中设置环境变量(如),同时仍然能够仅用一个命令启动应用程序。
本文向大家介绍rx-java 设置Retrofit和RxJava,包括了rx-java 设置Retrofit和RxJava的使用技巧和注意事项,需要的朋友参考一下 示例 Retrofit2带有对多种可插入执行机制的支持,其中一种是RxJava。 要与RxJava一起使用改造,首先需要将Retrofit RxJava适配器添加到您的项目中: 那么在构建改造实例时需要添加适配器: 在您定义API的界面
我试图设置一个ENV等于Python脚本输出在我的dockerfile。由于分层,我无法找到将它们放在同一层的方法。我也无法找到一种方法将变量直接设置为等于脚本,我似乎无法找到如何在同一行中运行脚本。 python是一个简单的打印,称为test.py: 到目前为止,我已经在dockerfile中尝试了以下几个版本,以将ENV设置为脚本: 是否可以一步将ENV testvar设置为脚本的值,或者确保
我正在Android上使用RxJava来执行登录操作。 我需要传入用户名、密码和布尔标志。用户名和密码并发送到服务器进行验证,一旦返回响应,我需要使用该标志来确定下一步要做什么。 由于登录操作是异步的,所以我希望确保当响应返回时,我仍然可以访问我在开始时传入的用户名、密码和标志。 以下是我认为存在问题的最初编码方式: 当我调用ecute1()时,它会返回一个可观察的,我将其缓存然后订阅。如果发生A
问题内容: 这是我第一次使用SQLServer 2012,并且我收到的这段代码不起作用: 这段代码有问题: 我有以下三个错误: 问题答案: 您需要替换为,它将起作用 所以这 需要替换为