[英]SQLiteOpenHelper vs ContentProvider
我是Android開發的新手。 我正在嘗試創建一個從內部數據庫(SQLite)讀取的應用程序,並列出列表中的所有數據(我正在使用listView
)。
到目前為止,我有一個名為DatabaseHandler
的類,它擴展了SQLiteOpenHelper
,它正在執行所有數據庫操作(選擇數據,插入數據,刪除數據......)。
但是現在我想列出這些值,我正在閱讀一些網站,我必須使用Loader
而不是Cursor
,因此我會使用ContentProvider
。 到目前為止,我了解ContentProvider
提供對數據庫的受控訪問。
我的問題是: ContentProvider
是否與SQLiteOpenHelper
?
此外,我正在使用API級別8,而ContentProvider
僅適用於API級別11.解決此問題的最佳方法是什么?
提前致謝。
我的問題是:ContentProvider是否與SQLiteOpenHelper一樣?
ContentProvider
由應用程序的開發人員實現,如果他或她允許其他開發人員在他們的應用程序中訪問應用程序的數據庫 - 只需要進行共享 。 它就像是某個數據庫的服務器,它的客戶端是ContentResolver
,它知道ContentProvider
的權限。 例如,如果您需要從您的設備獲取一些聯系人,那么您應該使用Contacts數據庫的ContentProvider
,更具體地說,它是Contract類 。
如果您知道適當的ContentProvider
的權限,則可以使用ContentResolver
對象與其進行通信。
在其他情況下,您應該通過SQL抽象模型與數據庫進行交互,該模型由android.database
和android.database.sqlite
類表示。
而且 - ContentProvider
可從主API級別作為應用程序的主要組件之一。
從官方文檔:
在開始構建提供程序之前,請執行以下操作:
確定您是否需要內容提供商。 如果要提供以下一項或多項功能,則需要構建內容提供程序:
您希望向其他應用程序提供復雜的數據或文件。 您希望允許用戶將應用中的復雜數據復制到其他應用中。 您希望使用搜索框架提供自定義搜索建議。
SQLiteOpenHelper
用於管理數據庫創建和打開。 它只是sqlite數據庫的輔助類,可以在db操作的任何地方使用。
ContentProvider
是android的4個基本組件之一,另外3個是Activity
, Service
和Broadcast
。 ContentProvider
用於管理對任何結構化數據集的訪問,包括sqlite數據庫。 ContentProvider
的數據源可能是數據庫,但不一定是。
ContentProvider
通常用於向其他應用程序提供自己的數據,就像ContactsProvider
和CalendarProvider
。 與直接提供數據庫相比,使用ContentProvider
提供某些指定接口更安全。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.