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);
}
錯誤的答案,如果你的變量通過'findAllSortedAsync返回( )'獲取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