私は現在RealmObjectsを照会してGoogleMapに表示するためにレルムを使用しています。 RealmResultsを読み込んで取得していますが、UIスレッドからマップにマーカーを配置する方法が見つかりません。 UIスレッドで約150msの遅延が発生するため、非同期呼び出しでこれを行うことをお勧めします。Realm Android:非同期トランザクションがUIスレッドに影響を与えます
public void loadLocations(final GoogleMap googleMap) {
try {
realm.executeTransactionAsync(new Realm.Transaction() {
@Override
public void execute(Realm realm) {
RealmResults<LocationObject> locations = realm.where(LocationObject.class).findAll();
for (LocationObject location: locations) {
googleMap.addMarker(new MarkerOptions()
.position(new LatLng(location.lat, location.long))
}
}
});
}
どのようにして後でUIスレッドでRealmResultsにアクセスできますか? RealmObjectsがスレッド制限されているとRealmが言います
Ohhhhhので、最初の "findAllAsync"トランザクションが完了すると、その後のすべての更新に対して変更リスナーが呼び出されます。素晴らしいアドバイス、ありがとう@andyaldoo –
@JesusGarciaまさに。 –