問題タブ [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.

0 投票する
1 に答える
386 参照

java - RealmChangeListener が非同期書き込みの直後に追加された場合に実行されない

簡単に言えば、特定の状況下で RealmChangeListener が意図したとおりにトリガーされない理由がわかりません。なぜ aRealmChangeListenerが機能しないのかについてのアドバイスを探しています。

更新:滞在が有効であることを確認しましたRealmResults= true; ロードされた=偽。変更リスナーを追加した後に実行すると、ログにRealmResults.load()あいまいなメッセージが出力され、Realm ソースをステップ実行すると a が出力されます。この例外は意味があると思います。非同期書き込みが更新されたため、クエリが機能しなくなったようです。ただし、書き込みと非同期クエリの両方がメイン スレッドから開始されます。Throwing Exception 7BadVersionExceptionRealmexecuteTransactionAsyncMainActivity

-

ボタンを押すと非同期書き込みが実行される MainActivity があります。

データを表示する 2 番目のアクティビティを開く別のボタンがあります。

2 番目のアクティビティでは、ViewPager と各タブのフラグメントを使用します。各タブには異なるクエリがあります。

2 つ目のアクティビティを開きます。これは、4 つのフラグメントをインスタンス化しますが、それらをアクティビティにアタッチしません。

次に、アクティビティはクエリを実行し、それぞれRealmResultsをフラグメントに渡します。フラグメントにRealmChangeListenerは、読み込まれたデータを表示するために がインストールされます。RealmChangeListenerフラグメントがアクティビティにアタッチされていない場合、 が機能しない可能性がありますか?

とにかく、これはRealmResults(によって作成されたfindAllAsyncSorted()) を受け取り、アダプタのデータを更新することになっているフラグメントのメソッドです。

RealmResultsご覧のとおり、クエリが有効であり、変更リスナーが追加されるまでロードされず、も もRealmChangeListenerガベージ コレクションされないことを確認するように努力しました。

それでも、4 つのうちRealmChangeListeners、2 つ以下 (ゼロの場合もある) しかトリガーしません。

これは、MainActivity で非同期書き込みを開始した直後に 2 番目のアクティビティが開かれた場合にのみ発生することに注意してください。2 秒待つと、すべてが意図したとおりに機能します。アプリを終了した後に が呼び出されるRealmChangeListenerため、 がガベージ コレクションされていないことを確認しました。finalize()何がリスナーの動作を妨げるのかわかりません。特に注意すべきことはありますか?

0 投票する
1 に答える
299 参照

realm - Realm Java による並べ替え RealmList リンク

次のモデルがある場合:

どのように言うことができます:並べ替えられたリストをすべて教えてください。メッセージの一番上の項目で並べ替えられていますConversationsMessageConversationsか?