安卓學習筆記之Content provider

安卓四大組件之 content provider


用途

  • 跨程序共享數據(爲其他應用程序提供訪問數據的接口)

  • 利用Content Provider對數據進行封裝,有利於脫離對數據庫的依賴性(解耦)。改變底層數據庫,而上層數據查詢不用改變。


什麼是Content Provider?

使用安卓存儲有五種方式,分別是

  1. 文件
  2. 網絡存儲
  3. 數據庫
  4. content provider
  5. sharedpreference

其中content provider 是安卓四大組件之一,按照英文翻譯理解爲,內容提供者。顧名思義,就是讓內容提供給別的應用程序 ,即跨應用提供數據的統一接口。

直接上英文,權威一點。
Content providers manage access to a structured set of data. They encapsulate the data, and provide mechanisms for defining data security. Content providers are the standard interface that connects data in one process with code running in another process.

官方是這麼解釋的,翻譯過來就是,Content provider管理android以結構化方式存放的數據。他以相對安全的方式封裝數據並且提供簡易的處理機制。Content provider提供不同進程間數據交互的標準化接口。


既然是對數據進行操作,所以增刪查改必不可少的。
下面我們演示一個簡單的demo
首先是創建一個ContentPro類繼承自content provider類

public class ContentPro extends ContentProvider {
    @Override
    public boolean onCreate() {
        return false;
    }

    @Nullable
    @Override
    public Cursor query(@NonNull Uri uri, @Nullable String[] strings, @Nullable String s, @Nullable String[] strings1, @Nullable String s1) {
        return null;
    }

    @Nullable
    @Override
    public String getType(@NonNull Uri uri) {
        return null;
    }

    @Nullable
    @Override
    public Uri insert(@NonNull Uri uri, @Nullable ContentValues contentValues) {
        return null;
    }

    @Override
    public int delete(@NonNull Uri uri, @Nullable String s, @Nullable String[] strings) {
        return 0;
    }

    @Override
    public int update(@NonNull Uri uri, @Nullable ContentValues contentValues, @Nullable String s, @Nullable String[] strings) {
        return 0;
    }
}

繼承了類之後要對應的要實現8個方法。分別是
繼承的方法

也就是代碼中提到的方法。
然後使用它之前和其它組件一樣,必須在Manifest清單文件裏面進行聲明。

<provider
    android:authorities="com.example.does.myapplication.ContentPro"
    android:name=".ContentPro">
</provider>

其中authorities這個屬性我們可以這樣理解爲它的身份證。爲了保證統一性,我們命名的方式是使用包名。


使用到的類

  1. Content Resolver
    解析器,用來訪問content provider類

  2. Content Provider
    內容提供者,用來給其它程序提供數據,主要提供對外訪問的接口

  3. Uri
    用來區分應用程序,字段的url,分爲三部分

  4. Uri.Builder
    用來連綴構建標準Uri的類

  5. ContentUris
    用來給Uri追加id和讀取Uri中的id的幫助類

  6. UriMatcher
    Content Provider用來處理(匹配)不同Uri的類,創建Content Provider的時候就依靠UriMatcher進行匹配從而確定對不同的Uri請求進行不同的操作,有以下兩個

  7. Uri的MIME類型


如何使用?

數據都是uri的形式向外公開的。

我作爲新手,水平有限,就簡單介紹一下,content provider規定數據形式的uri組成。

有三個部分,分別是

  • scheme
    這是google規定的,scheme是 content://

  • 主機名(Authorities)
    這個就是我們在清單文件裏面聲明的,相當於身份證,比如這裏的

    com.example.does.myapplication.ContentPro,外部調用可以根據這個標識來找到它。

  • path
    路徑(Path)可以用來表示我們要操作的數據,路徑的構建根據業務而定。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章