問題タブ [realm-java]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - RealmChangeListener が非同期書き込みの直後に追加された場合に実行されない
簡単に言えば、特定の状況下で RealmChangeListener が意図したとおりにトリガーされない理由がわかりません。なぜ aRealmChangeListener
が機能しないのかについてのアドバイスを探しています。
更新:滞在が有効であることを確認しましたRealmResults
= true; ロードされた=偽。変更リスナーを追加した後に実行すると、ログにRealmResults.load()
あいまいなメッセージが出力され、Realm ソースをステップ実行すると a が出力されます。この例外は意味があると思います。非同期書き込みが更新されたため、クエリが機能しなくなったようです。ただし、書き込みと非同期クエリの両方がメイン スレッドから開始されます。Throwing Exception 7
BadVersionException
Realm
executeTransactionAsync
MainActivity
-
ボタンを押すと非同期書き込みが実行される MainActivity があります。
データを表示する 2 番目のアクティビティを開く別のボタンがあります。
2 番目のアクティビティでは、ViewPager と各タブのフラグメントを使用します。各タブには異なるクエリがあります。
2 つ目のアクティビティを開きます。これは、4 つのフラグメントをインスタンス化しますが、それらをアクティビティにアタッチしません。
次に、アクティビティはクエリを実行し、それぞれRealmResults
をフラグメントに渡します。フラグメントにRealmChangeListener
は、読み込まれたデータを表示するために がインストールされます。RealmChangeListener
フラグメントがアクティビティにアタッチされていない場合、 が機能しない可能性がありますか?
とにかく、これはRealmResults
(によって作成されたfindAllAsyncSorted()
) を受け取り、アダプタのデータを更新することになっているフラグメントのメソッドです。
RealmResults
ご覧のとおり、クエリが有効であり、変更リスナーが追加されるまでロードされず、も もRealmChangeListener
ガベージ コレクションされないことを確認するように努力しました。
それでも、4 つのうちRealmChangeListeners
、2 つ以下 (ゼロの場合もある) しかトリガーしません。
これは、MainActivity で非同期書き込みを開始した直後に 2 番目のアクティビティが開かれた場合にのみ発生することに注意してください。2 秒待つと、すべてが意図したとおりに機能します。アプリを終了した後に が呼び出されるRealmChangeListener
ため、 がガベージ コレクションされていないことを確認しました。finalize()
何がリスナーの動作を妨げるのかわかりません。特に注意すべきことはありますか?
realm - Realm Java による並べ替え RealmList リンク
次のモデルがある場合:
どのように言うことができます:並べ替えられたリストをすべて教えてください。メッセージの一番上の項目で並べ替えられていますConversations
Message
Conversations
か?