1. 程式人生 > >ContentProvider和資料庫的區別

ContentProvider和資料庫的區別

大家好,今天我們來講解ContentProvider和資料庫的區別是他們之間的聯絡.

四大元件之一

1.ContentProvider是如何實現資料共享的?

    1.在Android中,為了把自己程式的資料(一般是資料庫)提供給其他應用程式,就通過ContentProvider提供的方法.
    2.內容提供者可認為是程式間共享資料的介面,新建一個類繼承ContentProvider.
    3.按要求重寫insert,delete,update,query方法(用於資料庫的操作).

    4.要記得進行清單檔案註冊:

        註冊要加上作者標記authorities(自定義的):

        <provider
            android:authorities="this.bank.authority"
            android:name=".MyContentProvider"/>
            1
            2
            3

    5.其他程式通過內容解析者ContentResoler的物件進行增刪改查

2.為什麼要使用ContentProvider?它和sql在實現上有什麼區別?

    1.ContentProvider 遮蔽了資料儲存的細節,內部實現透明化,使用者只需關心uri即可(是否匹配)
    2.ContentProvider能實現不同app的資料共享,sql 只能是自己程式才能訪問
    3.Contentprovider還能增刪本地的檔案,xml等資訊

3.說說ContentProvider,ContentResolver,ContentObserver之間的關係?

    ContentProvider:內容提供者,定義增刪改查(方法)和資料庫關聯;
    ContentResolver:內容解析者,一個app裡邊用於獲取另一個app的資料(進行增刪查改的具體資料操作)

    ContentObserver:內容觀察者,另外的一個app(可以是不同於上述兩個app)可以監聽資料改變的訊息
        1.getContentResolver.notifyChange(uri):在內容提供者裡面的各個方法新增,這樣就能發出訊息
        2.getContentResolver.registerContentOberver():進行監聽註冊,一個想觀察內容變化的app,在觀察者建立時就註冊