我正在編寫一個由業務邏輯和UI部分組成的應用程序。 BL和UI都有相當大量的數據存儲和訪問/修改。在大多數情況下,存儲數據的更改應立即由UI反映。如何決定直接訪問數據庫和內容提供者?
如何決定我是否應該或不應該使用直接數據庫訪問?內容提供商?
我已經對這個主題做了一些閱讀(1,2),我理解這兩個選項之間的區別。
請對這個問題的其他方面,如性能,代碼開發和維護的難易程度等,分享您的想法
我正在編寫一個由業務邏輯和UI部分組成的應用程序。 BL和UI都有相當大量的數據存儲和訪問/修改。在大多數情況下,存儲數據的更改應立即由UI反映。如何決定直接訪問數據庫和內容提供者?
如何決定我是否應該或不應該使用直接數據庫訪問?內容提供商?
我已經對這個主題做了一些閱讀(1,2),我理解這兩個選項之間的區別。
請對這個問題的其他方面,如性能,代碼開發和維護的難易程度等,分享您的想法
在我編寫的應用程序中,我發現一旦通過了學習曲線,實現ContentProvider就非常容易。
優點:
缺點:
當我試圖弄清楚如何實現ContentProvider時,我傾倒了Google's I/O應用程序中的示例代碼。在做出決定之前,我至少會花一天時間對原型進行原型設計,以便您可以親身體驗權衡。
IMO:單APK ==通過持久層的直接訪問。多重APK(無論是您自己的,還是希望將數據訪問權限提供給其他人的應用程序)==內容提供商通過簡單的必要性。
我會建議花費額外的時間和精力來編寫您的ContentProvider。 ContentProviders不僅僅是共享對數據的訪問。優點
ContentObservers
notifyChange
總而言之,ContentProvider是一個非常漂亮的Android概念,值得實施。一旦你有了你的定義,增加對更多數據的支持並不是很困難。然後,它將像在Helper類或業務邏輯類中編寫數據庫代碼一樣簡單。
**編輯** 下面是從模型類生成內容提供商的代碼工具:https://code.google.com/p/mdsd-android-content-provider/
謝謝。您是否注意到內容提供商與直接數據庫訪問相比存在任何性能問題? – Asahi
@Asahi內容提供者是一個非常簡單的抽象。我沒有看到使用它們的任何性能問題。 –