0
的動態變量在我的RxJava代碼中,我創建了一個具有間隔的Observable。代碼如下所示:RxJava使用間隔爲
public class GetProducts implements RxRequest<Observable<ProductsResult>> {
private LatLng markerLocationToReport;
private static int TIMER = 5;
private static GetProducts INSTANCE = new GetProducts();
public static GetProducts getInstance() {
return INSTANCE;
}
private Observable obs;
private GetProducts() {
}
@Override
public Observable<ProductsResult> getObservable() {
if (obs == null) {
obs = Observable.interval(0, TIMER, TimeUnit.SECONDS, Schedulers.io())
.flatMap((tick) -> Observable.just(GetProductsRequest.getProducts(markerLocationToReport)))
.retry()
.observeOn(AndroidSchedulers.mainThread()).publish();
((ConnectableObservable) obs).connect();
}
return obs;
}
public void setMarkerLocationToReport(LatLng markerLocationToReport) {
this.markerLocationToReport = markerLocationToReport;
}
}
我的問題是,我該如何使用的markerLocationToReport
當前值在我flatMap
功能? 因爲在當前代碼中請求由GetProductsRequest.getProducts(markerLocationToReport)
發出時,創建Observable
時始終使用初始值markerLocationToReport
,我需要在應用生命週期中更新它。
感謝的
不知道,我用'volatile'試過,但是當我更新我的變量時,它保持爲空,當我進入getProduct()方法時 –
奇怪。你確定lambda捕獲正確的變量? – akarnokd
最後是易變的作品。我的同事沒有告訴我所有的事情。所以謝謝 –