安卓四大元件之ContentProvider

2021-07-22 23:32:00 字數 2591 閱讀 5675

contentprovider是內容提供者

為什麼要有內容提供者?

因為在安卓中每乙個應用的資料庫檔案都是私有的,自能在自己的應用中自己使用,別的應用要是想訪問,那麼就需要修改檔案的許可權,這樣資料就變的不安全了,

所以就引入了內容提供者。

首先來說一下內容提供者中的乙個重要的類uri,熟悉uri會使我們更容易學習內容提供者

uri是統一資源標示符,用來唯一的標識乙個資源

我們在內容提供者中用的uri包含了兩個部分的資訊

1.需要操作的contentprovider

2.、對contentprovider中的什麼資料進行操作

組成部分

1.scheme:contentprovider的scheme已經有安卓規定好了,為content://

2.主機名:用於 唯一標識這個contentprovider,外部呼叫者可以根據這個標識來找到它

3.路徑:用來表示我們要操作的資料,路徑的具體值應該根據我們具體的業務需求來定

private static final int query = 0;

private static final int insert = 1;

private static final int delete = 2;

private static final int update = 3;

private static urimatcher matcher = new urimatcher(urimatcher.no_match);

static

語句解釋:建立urimatcher物件 

呼叫urimatcher中的adduri()方法可以註冊uri位址 

int code = matcher.match(uri);
語句解釋:得到從外部傳遞過來的uri 呼叫urimatcher中的math方法在,呼叫這個方法的之後,會拿著接收到的uri與我們已經註冊過的uri進行匹配,如果匹配成功,

就會返回註冊的時候的標識

例如:如果我們接收的uri是  content: 呼叫math()方法之後,就會返回0,uri是content: 返回的就是1

接下來我們來建立自己的contentprovider 

1.定義乙個類繼承contentprovider 重寫方法

public class myprovider extends contentprovider 

@override

public cursor query(uri uri, string projection, string selection,

string selectionargs, string sortorder)

@override

public string gettype(uri uri)

@override

public uri insert(uri uri, contentvalues values)

@override

public int delete(uri uri, string selection, string selectionargs)

@override

public int update(uri uri, contentvalues values, string selection,

string selectionargs)

}

重方法名我們就很容易看出,他是運算元據庫的

2.在清單檔案中註冊provider節點

authorities 這個屬性是非常必要的 他是內容提供者的標識

3.註冊uri 

private static final int succeed = 1;

private static urimatcher matcher = new urimatcher(urimatcher.no_match);

static

4.在myprovider的方法每個方法中對資料庫做相應的操作

例如:

public cursor query(uri uri, string projection, string selection,

string selectionargs, string sortorder)

return null;

}

這樣我們就寫好了乙個內容提供者

下面我們來看內容接收者

//通過上下文獲取內容接收者物件

contentresolver resolver = getcontentresolver();

//設定訪問的uri位址 只用只用位址和要訪問的提供者位址匹配 才能成功訪問

uri uri = uri.parse("content:");

//查詢資料庫

cursor cursor = resolver.query(uri , null, null , null, null);

while (cursor.movetonext())

安卓四大元件之 service

服務 長期後台執行的沒有介面的activity,程式寫法和activity類似。安卓系統程序管理是按照一定規則的 1.預設情況下,關閉掉乙個應用程式,清空了這個應用程式的任務棧,應用程式的程序還會保留。因為手機記憶體較小,方便下次快速啟動應用程式,但是也會帶來記憶體不足的問題。2.安卓系統有一套記憶...

安卓四大元件之服務

1.服務簡介 服務是安卓中實現程式後台執行的解決方案,它非常適合去執行那些不需要和使用者互動而且還長時間執行的任務,服務的執行不依賴於任何使用者介面,即使程式被切換到後台,或者使用者開啟了另外乙個應用程式,服務仍然能夠保持執行。注意 1 服務並不是執行在乙個獨立的程序中,而是依賴於建立服務時所在的應...

安卓四大元件複習

android四大基本元件介紹與生命週期 android四大基本元件分別是activity,service服務,content provider內容提供者,broadcastreceiver廣播接收器。一 了解四大基本元件 activity 應用程式中,乙個activity通常就是乙個單獨的螢幕,它...