ContentProvider(1) — ContentProvider介紹

前言

Android開發過程中,我們知道有四大組件:Activity,ServiceBroadCast以及ContentProvider
Activity方面的知識我曾經也多少講解過一些,比較零散。關於它的知識主要是圍繞生命週期啓動模式展開。關於Activity生命週期我沒有系統講過,不過與之相關的Fragment的生命週期我倒是講過,大家感興趣的話,可參考DialogFragment(一)——簡介來對比Activity生命週期學習。
關於Activity啓動模式大家可以參考以下文章:
Kotlin筆記(41) — Activity啓動模式

Service學習的話,大家可參考:
一.Service簡介
二. "非綁定式服務"知識全解
三.快速創建"非綁定式"服務
四."綁定式"服務知識全解
五.快速創建"綁定式"服務
六.AIDL實現跨進程通訊
七.IntentService使用講解

BroadCast學習,大家可參考:
一.BroadCast全解析
二.封裝一個廣播工具類 —— AppReceiver
三.本地廣播 — LocalBroadcastManager
四. 網絡實時監測廣播
五.App開機自啓動的實現
六.App強迫下線的實現

ok,今天就和大家來學習下內容提供器ContentProvider的相關知識吧。
今天涉及到的知識:

  1. ContentProvider內容提供器包括哪些內容
  2. ContentProvider使用
  3. 最後要說的話

一.ContentProvider內容提供器包括哪些內容

我們一直說的ContentProvider是四大組件之一,其實這裏的ContentProvider遠不止ContentProvider而已。它其實包括以下知識:

  • ContentProvider :app內部數據提供器,用以實現不同應用間數據共享。
  • ContentResolver:內容解析器,主要用於查詢,獲取手機內部聯繫人,短信等數據。
  • ContentObserver:內容觀察器,一般用於監聽短信動作,如接收短信,發送短信等。

二. ContentProvider使用

ContentProvider主要用於不同應用間跨進程數據訪問。但是ContentProvider自身並不具備數據存儲功能,它只提供數據操作(增刪改查)的統一接口。這些接口的執行,需要一個具體的數據庫對象(Android上一般爲Sqlite數據庫對象)來協助完成各種數據庫操作。
說起來比較枯燥,下面舉例說明。
假如我們在一部手機上有兩個應用:AB。要實現應用B可以訪問應用A的數據的話,則在應用A中需要現有自己的數據庫,假設此數據的操作數據庫對象爲SQLiteDatabase db,然後繼承ContentProvider寫一個自己的Provider,假設叫MyProvider,將db對象放到MyProvider中,利用db對象寫一系列的增刪改查方法。
然後在A應用的Androidmanifast.xml中註冊MtProvider,類似下面這樣:

<provider
            android:exported="true"
            android:authorities="xxxx"
            android:name=".provider.MyProvider"/>

接着在應用B中利用ContentResolver通過對應匹配的uri去調用對應的進程一的contentprovider的不同的表進行增刪改查操作。
大致邏輯就是這樣了。ContentProvider的使用已有大神做過詳細講解,這裏貼下這篇文章:
ContentProvider的簡單使用
在此,對該作者表示感謝。

三. 最後要說的話

ContentProvider的使用場景是跨進程數據共享。適用於兩個不同應用需要數據共享的場景。但是在實際開發中,由於很多app已經十分重視自己數據的安全性,使得該功能的使用頻率不是很高。大家瞭解就好。

ok, 今天的內容就介紹到這裏了,謝謝大家。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章