簡體   English   中英

Android系統。 內容提供商或數據庫?

[英]Android. Content provider or Database?

如果使用ContentProviderDatabase更好,我在這個問題上有點困惑。 或者,如果我不想與其他應用程序共享任何數據,則沒有任何區別。

如果我理解正確,內容提供商基於SQLite並且它們的內容也可能只能訪問我的應用程序。

你能解釋一下嗎?

非常感謝你,

穆爾

當然,提供商是一個解決方案的有價值的問題,特別是對於跨應用程序數據發布。 例如,您需要使用內容提供商向快速搜索框提供搜索建議。

但是,對於應用程序內部使用,我不是粉絲。 成本(例如,靈活性降低,額外開銷)超過了恕我直言的好處。

如果您確實實現了內容提供程序,請記住默認情況下其他應用程序可以訪問它們。 您需要在<provider>元素中包含android:exported="false" ,以使其對您的應用程序保密。

使用內容提供商將為您提供更加模塊化的設計,如果您將來希望從其他應用程序獲取數據,則可以讓您的生活更輕松。 如果您確定只需要從一個應用程序獲取數據,那么您也可以直接在數據庫上運行。

您應該注意一個特定的SQLite限制,那就是SQLite只是單用戶。 這實際上意味着您需要保護您的數據庫不會同時從多個線程訪問。 這在內容提供者中通常不是問題,因為它們幾乎總是具有單線程實現。

使用內容提供商的原因在這里

綜上所述:

  1. 輕松更改基礎數據源(您可以將數據庫從Sqlite更改為Mongo或更改為JSON文件,而無需更改任何應用程序)
  2. 利用一些Android類的功能(SyncAdapter,Loaders,CursorAdapter) - 這些類需要內容提供者,如果你沒有,你就無法使用它們
  3. 允許許多應用安全地訪問,使用和修改單個數據。 (這是使用它的主要原因)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM