GoogleマップのOnCameraChangeListener
がトリガーされたときにトリガーになるサブスクライバを書きました。rxandroidはAndroidSchedulers.mainThread()で購読していても、uiスレッドを実行するように求めています
Observable.create(new Observable.OnSubscribe<LatLng>()
{
@Override
public void call(Subscriber<? super LatLng> subscriber)
{
if (!subscriber.isUnsubscribed())
{
mMap.setOnCameraChangeListener(cameraPosition ->
subscriber.onNext(cameraPosition.target));
}
}
}).subscribeOn(AndroidSchedulers.mainThread())
.observeOn(AndroidSchedulers.mainThread())
.onErrorResumeNext(Observable.<LatLng>empty())
.debounce(1, TimeUnit.SECONDS)
.subscribe(position -> {
if (position.latitude != 0 && position.longitude != 0)
{
updateLocationMarker(position);
}
});
私は以下のように位置マーカーを更新しています:
Caused by: rx.exceptions.OnErrorNotImplementedException: Only the original thread that created a view hierarchy can touch its views.
は、いくつかのいずれかが私を助けてください。私のコードは、私はこのエラーを取得するAndroidSchedulers.mainThread()
上で実行するように言うにもかかわらず
private void updateLocationMarker(LatLng center)
{
locationMarkertext.setText("Lat:" + center.latitude + " Long:" + center.longitude);
//locationMarkerLayout.setVisibility(View.VISIBLE);
}
私のアプローチの問題点を理解してください
http://reactivex.io/RxJava/javadoc/index.html?rx/exceptions/OnErrorNotImplementedException.html。 onErrorのエラーを処理する必要があるかもしれません – Raghunandan