Android四大組件之ContentProvider

1. 理解

1). 為會么要有ContentProvider?

a. 數(shù)據(jù)庫文件只能當前應用訪問, 別的應用不能直接訪問

b. 在真實的應用需求中, 可能需要應用操作其它應用的數(shù)據(jù)庫表數(shù)據(jù)

2). ContentProvider是什么?

ContentProvider是四大應用組件之一

當前應用使用ContentProvider將數(shù)據(jù)庫表數(shù)據(jù)操作暴露給其它應用訪問

其它應用需要使用ContentResolver來調用ContentProvider的方法

它們之間的調用是通過Uri來進行交流的

2. 相關API:

1). ContentProvider: 內容提供者類

a. CRUD的方法: query(), insert(), update(), delete()

b. onCreate()\

a. CRUD的方法:

query(),

insert(),

update(),

delete()

b. 實現(xiàn)觀察的相關方法:

registContentObserver()

unRegistContentObserver()

notityChanged()

c.得到它的對象

context.getCOntentResolver();

3. ContentObserver: 內容觀察者類

void onChange(boolean selfChange) : 數(shù)據(jù)改變, 且執(zhí)行了notityChanged()

4). Uri: 包含一個具有一定格式的字符串所對應資源的類

A : 是一個前綴,表示是由ContentProvider提供,固定不變

B : authority, 標識是哪個Provider,不同的Provider此部分必須不同。

C : 對應于哪張表 student

D : id值, 對應表中的哪條記錄

5). UriMatcher: 用來識別uri的一個uri容器

//添加一個合法的URI

void addURI(String authority, String path, int code)

//匹配指定的uri, 返回匹配碼

int match(Uri uri)

6). ContentUris: 操作uri的工具類

//解析uri, 得到其中的id

long parseId(Uri contentUri)

//添加id到指定的uri中

Uri withAppendedId(Uri contentUri, long id)

3. 自定義ContentProvider

1).編寫ContentProvider子類

class StudentContentProvider extends ContentProvider {

//實現(xiàn)inert、delete、update和query等方法

}

2). 在manifest.xml中注冊

android:name=".StudentContentProvider"

android:authorities="com.atguigu.provider.studentprovider"

android:exported="true"/>//標識是否允許其它應用訪問,默認是false

4. 使用ContentResolver訪問ContentProvider

1). 得到ContentResolver的對象

2). 調用query(), delete(), update(), insert()方法調用ContentProvider對應的方法

操作ContentResolver: 注冊, 解注冊, 通知

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容