如何解决“ lambda表达式中使用的变量应该是最终的”?

时间:2019-01-11 17:58:12

标签: java lambda rx-java2

我正在制作一个android应用程序,并尝试将Map Marker添加到地图(如果这是第一个api调用),或者只是重新设置标记的位置。我正在使用RxJava2重复调用API。问题是我无法检查它是否是第一个API调用,因为不允许我访问非最终布尔值。

boolean firstReposition = true;
        //Create position call
        ISSPositionService service = ServiceGenerator.createService(ISSPositionService.class);

        //create observable
        Observable<ISSPositionData> issPositionCall = service.getPosition();

        Disposable disposable = issPositionCall.subscribeOn(Schedulers.io())
                .repeatWhen(completed -> completed.delay(30, java.util.concurrent.TimeUnit.SECONDS))
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(positionData -> {
                    LatLng currentIssPosition = new LatLng(positionData.getIssPosition().getLatitude(), positionData.getIssPosition().getLongitude());
                    if (firstReposition) {
                        issMarkerOptions.position(currentIssPosition);
                        map.addMarker(issMarkerOptions);
                        firstReposition = false;
                    }
                    else {
                        issMarker.setPosition(currentIssPosition);
                    }

                    //animate camera so it shows current position
                    map.animateCamera(CameraUpdateFactory.newLatLng(currentIssPosition));
                });

我该如何重写代码,以便能够检查和设置布尔值?

1 个答案:

答案 0 :(得分:1)

使用react-native run-android,可以使用java-docsAtomicBooleanset()方法

get()