爲什麼android平臺中沒有SqliteCursorLoader?這與CursorLoader類似,但是對於SQLite數據庫而不是Content Provider。我在網絡上發現了一些實現,它似乎很有用。AOSP貢獻:Sqlite DB的CursorLoader代替ContentProvider
-1
A
回答
2
爲什麼android平臺中沒有SqliteCursorLoader?
因爲要履行Loader
合同是非常困難的。有三件事情,一個Loader
需要能夠做到:
執行異步工作。這可以通過繼承
AsyncTaskLoader
來處理,所以這裏沒有真正的問題。通過配置更改保留加載的數據。這是由框架提供的,所以這裏沒有真正的問題。
當內容發生變化時自動發送更新的內容。
項目#3是問題所在。這與CursorLoader
一起工作的唯一原因是ContentProvider
系統已經具有ContentObserver
的概念,並且已經期望提供商進行適當的通知調用以使系統知道數據更改。
所以,它不僅僅是爲實現SQLiteCursorLoader
,但也有保證到處您修改數據庫,引發事件(例如,通過LocalBroadcastManager
)的Loader
可能爲了知道它監聽需要重新查詢數據庫並提供新的Cursor
。
現在,對於項目的內部目的,您可能願意吝嗇合同並跳過項目#3。這非常酷。但是,由於這種限制,我不建議分發這樣的實現(例如,作爲開源項目)。這就是爲什麼我停止了我的SQLiteCursorLoader
(超出了一般認爲Loader
框架是一個失敗的抽象)。
相關問題
- 1. CursorLoader,ContentProvider太慢了
- 2. 用git貢獻
- 3. Github貢獻圖
- 4. 貢獻Python
- 5. Hadoop貢獻
- 6. 計算貢獻
- 7. 對SubSonic的貢獻
- 8. WordPress的貢獻者?
- 9. eclipse菜單貢獻
- 10. 對雲代工的新手貢獻
- 11. LDA貢獻雙標
- 12. 將對象貢獻轉換爲日食中的菜單貢獻
- 13. github貢獻圖表不顯示我的貢獻
- 14. 爲Google Glass貢獻示例代碼
- 15. Clojure的整體貢獻
- 16. 對主菜單的貢獻
- 17. 貢獻git包的過程?
- 18. Track的貢獻者發佈
- 19. 貢獻於Pypy上的Numpy
- 20. Sharepoint貢獻許可問題
- 21. 貢獻Linux發行版
- 22. GitHub貢獻直方圖
- 23. 圖表貢獻者爲空
- 24. Moq和Moq貢獻版本
- 25. E4貢獻共享元素
- 26. 貢獻R測試腳本
- 27. 貢獻開源C++庫
- 28. 禁用插件貢獻
- 29. 如何爲Rails做貢獻?
- 30. 計算邊際貢獻
@CommonsWare,我發現的其中一個實現是你的。有什麼補充?謝謝。 –