我有一個Android手機應用程序通過數據項api將整個領域文件發送到磨損應用程序。有一個穿戴應用程序的服務來替換本地領域文件與從手持發送的最新的。問題是在運行時收到新的領域文件後,Wear應用程序的列表視圖不會得到更新。它確實顯示重新啓動磨損應用程序後的新數據。有沒有什麼辦法可以告訴域在運行時手動更改領域文件?當領域文件發生變化時,領域不會在運行時更新
1
A
回答
0
這是一個非常有趣的用例!
但是我害怕現在正在做的事情可能會導致意想不到的結果。
當穿戴應用程序打開領域(比如Realm-file-A
)時,領域將打開一個文件描述符並使用它,直到它關閉。即使打開文件描述符,也可以使用file API/system命令刪除/覆蓋Realm文件。現在,當該文件被刪除並且Realm仍然被打開時,該應用程序仍然可以在沒有任何崩潰的情況下運行,這由操作系統保證。請參閱此question以瞭解此行爲。
因此,在你的情況下,由於磨損應用中的Realm沒有關閉(我猜),在Realm文件被另一個手持設備(比如說Realm-file-B
)替換之後,所有已經打開的Realm實例應用程序仍會讀取/寫入前一個 - Realm-file-A
。新創建的Realm實例將在Realm-file-B
上運行。這個場景不是由Realm處理的,你可能會遇到奇怪的不一致問題。
所以建議是,在將整個Realm文件發送到磨損應用程序之前,請確保磨損應用程序中的所有Realm實例均已關閉。發送後,再次打開Realm實例,然後手動刷新列表視圖。
但是,Realm應該更好地支持這一點。爲跟蹤此https://github.com/realm/realm-java/issues/2007創建了一個問題。
相關問題
- 1. 領域運行時錯誤
- 2. 更新領域
- 3. 領域:如果我們更新領域對象的主鍵會發生什麼?
- 4. 遠程領域(在領域對象服務器上)發生變化時不通知片段
- 5. Listview不會從領域更新
- 6. 知道同步領域何時更新
- 7. 在領域更新表
- 8. 領域:使用服務器同步領域時,本地領域是否存在?
- 9. Swift領域:當結果對象發生變化時,您能觀察嗎?
- 10. 當插件更新到2.2.1時getDefaultInstance的領域錯誤
- 11. 的MongoDB:移動領域的新文件和更新領域和陣列
- 12. MySQL的觸發更新場時,其他領域的更新
- 13. 新領域
- 14. 的新領域
- 15. NSPredicate在領域過濾當前時間
- 16. 驗證每個領域的變化領域類
- 17. 更新drupal商業領域
- 18. 更新到Grails領域don'tpersist
- 19. 更新特定領域
- 20. 領域:部分更新
- 21. AppStore更新和領域
- 22. 更新領域數據庫
- 23. 領域:更新部分RLMArray
- 24. 瞭解哪個表在全局領域發生了變化ChangeListener
- 25. 標籤不會領域
- 26. 在領域的數據變化android
- 27. OpenERP的 - 功能不更新領域
- 28. 領域查詢不更新android
- 29. 存儲過程不更新領域
- 30. IN在領域運作
嗯,這是有道理的。我還沒有找到使同步任務更簡單的快速方法。我試圖序列化領域對象並在發生更改時每次發送它們。你認爲如果這是做同步的正確方法嗎? –
您是否曾經需要更改可穿戴側的數據?我們確實支持iOS和watchOS之間的通知,但似乎Android可穿戴設備的體系結構完全不同,我們沒有可靠的方法使兩個域的Realm文件同步。如果雙方都想改變Realm數據,這可能會讓人頭疼。 – beeender
是的,我只給予在可穿戴側插入新數據的能力。關於可穿戴設備的領域數據僅在從手持設備收到通知(由數據項api發送)後發生變化。用戶不能在沒有通知的情況下直接修改領域。我只是重構了在json中發送新的更改。有效。 –