2013-07-25 63 views
0

我必須表明在ListView SQLite數據庫的內容,並尋求在網上我發現了2個選項:Android:有什麼更好的,使用SQLiteCursorLoader或實現ContentProvider?

內容提供商

Android Dev文檔說,訪問數據庫不需要內容提供者,它應該用於與其他應用程序共享數據(我不需要)。你認爲在效率,容易出錯和簡單方面更好?

謝謝你們!

+1

'Android開發人員的文檔說,訪問數據庫不需要內容提供者,它應該用於與其他應用程序共享數據(我不需要)'答案在於這個問題。使用裝載機。 – Simon

+0

是的,但我見過使用內容提供者的開發人員,並且我懷疑是否有一些優勢 – pposca

+0

我嘗試了兩種方法(使用ContentProvider和SimpleCursorAdapter的Loader),並且我認爲使用Loader與ContentProvider真的更好。 ContentProvider的實現很簡單,並且始終如一。它會爲你節省很多問題(例如遊標生命週期) – buzeeg

回答

0

很明顯,共享數據是人們使用內容提供商的最常見原因。

  • 目前已在SQLite和多個用戶的一些bug,雖然不是絕對的,通常內容提供商是在一個單獨的線程,並能解決這個問題,是的,這是在應用程序之間共享的數據。
  • 內容提供者可以爲您提供一種抽象級別,並且可能具有較少的代碼維護,特別是對於內部數據庫結構更改。
  • 它允許您使用CursorLoader執行異步查詢,從而加載您的UI活動,這是設計建議。
  • 與數據庫幫助程序配合使用,可以更輕鬆地使表和列名稱正確,並縮小必須查看和維護代碼的位置。
  • 在您的應用程序和內容提供程序之間使用數據庫幫助程序或協議可以提供一些安全性,因爲您將方法提供給您的和任何其他應用程序以更新數據。
  • 這也可以給你一些更好的數據完整性,這取決於你的數據庫結構有多複雜。它讓猜測工作失去了,我應該先更新表A,然後再更新表B或其他方式。
  • 它可以幫助表連接和視圖,所以你只需要弄清楚一次,並將它們表示爲一個URI。
  • 您可以創建一個URI來處理內容提供​​者內部的原始查詢以提供結果,否則可能很難用正常的URI結構編寫,因爲它在大多數教程中都有介紹。如果您必須編寫相關查詢,這也很有用。
+0

非常完整且有用的答案,@Peter。謝謝! – pposca

相關問題