0
私は、ゲームのリストを取得し、結果をロードするコールバックを使用する関数を記述しようとしています。これは私が今持っているものです。レルムを使用するときに、より汎用的なクラスとインターフェイスを定義するにはどうすればよいですか?
public void getAllGames(OrderedRealmCollectionChangeListener<RealmResults<Game>> callback) {
realm.where(Game.class).findAllSortedAsync("startTime").addChangeListener(callback);
}
私は、この関数からデカップルレルム(OrderedRealmCollectionChangeListener
とRealmResults
)を作りたいが、私は方法がわかりません。私はOrderedRealmCollectionChangeListener
を拡張するリスナーを作成しようとしましたが、まだRealmResults
が付いています。それを拡張しようとすると、BaseRealm
はプライベートなので、そのコンストラクタを作成することはできません。どのように私はそれがこのように見えるようにすることができます
public void getAllGames(SomeListener<SomeList<Game>> callback) {
realm.where(Game.class).findAllSortedAsync("startTime").addChangeListener(callback);
}
間違った答えを) 'がGCdを取得すると、変更リスナーは決して呼び出されません。 – EpicPandaForce
これは大丈夫ですが、コードをどのように記述しても、GCを取得していないことを確認するには、どのリスナーを保証することはできません。 –
あなたは[スレッドローカルの強力な参照カウンタにそれを保持し、クエリが完了したらrefカウンタから削除することができます](https://github.com/realm/realm-java/blob/master/realm/realm-library) /src/main/java/io/realm/rx/RealmObservableFactory.java#L52-L57)、最初に 'getAllGames 'を呼び出した後、提供されたRealmResultsに起こる変更をどのように聴いているのか少し気になります。 () 'を返します。 – EpicPandaForce