通過擴充套件
contentprovider
類來建立乙個新的
content provider
。重寫oncreate
方法來開啟或初始化你要通過這個
provider
提供的底層資料來源。新的
content provider
的框架**如下所示:
import android.content.*;
import android.database.cursor;
import android.net.uri;
import android.database.sqlexception;
public class myprovider extends contentprovider
}你還應該暴露乙個公共的靜態變數
content_uri
,來返回這個
provider
的uri。
content uri
在provider
間必須是獨一無二的,所以,乙個好的習慣是:
uri路徑值使用包名。定義乙個
content provider uri
的通用格式是:
例如:content uri
可以表示為兩種形式。上面的
uri表示請求某型別的全部值(例如,所有專案)。
在其後追加
/,如下所示,表示請求單一記錄(例如,第
5個專案)。
支援這兩種方式來訪問你的
provider
是個很好的形式。
做到這樣最簡單的方式是使用乙個
urimatcher
。當通過
contentresolver
來訪問乙個
provider
時,配置
urimatcher
解析uri
來決定它們的形式。下面的**顯示了這一樣式的框架**:
public class myprovider extends contentprovider
// create the constants used to differentiate between the different
// uri requests.
private static final int allrows = 1;
private static final int single_row = 2;
private static final urimatcher urimatcher;
// populate the urimatcher object, where a uri ending in 『items』 will
// correspond to a request for all items, and 『items/[rowid]』
// represents a single row.
static
}你可以使用相同的技巧來暴露資料中不同子集的
uri或資料庫中不同的表的
uri。
乙個好的習慣是:在
provider
中保留列的名稱和索引,來簡化通過
cursor
提取資訊。
暴露資料來源的訪問
你可以實現
delete
、insert
、update
和query
方法來暴露與你的
content provider
的查詢和互動功能。
這些方法作為底層資料來源的通用介面,允許
android
應用程式跨越程式邊界來共享資料,而不需要為每個程式公布不同的介面。
最常見的場景是使用乙個
content provider
來訪問乙個私有的
sqlite
資料庫,但使用這些方法,你可以訪問任何資料來源(包括檔案或應用程式例項的變數)。
接下來的框架**顯示了乙個
content provider
的查詢和互動功能。注意:
urimatcher
物件用於精煉互動和查詢請求。
@override
public cursor query(uri uri,string projection,string selection,string selectionargs,string sort)
return null;
}@override
public uri insert(uri _uri, contentvalues _initialvalues)
throw new sqlexception(「failed to add new item into 「 + _uri);
}@override
public int delete(uri uri, string where, string whereargs)
}@override
public int update(uri uri, contentvalues values, string where,string whereargs) }建立
content provider
最後一步是定義標識
provider
返回資料的
mime
型別。 重寫
gettype
方法,返回乙個獨一無二的字串來描述你的資料型別。返回的型別必須包含兩種形式,一種是單一專案,另一種是所有的專案,如下所示:
❑單一專案
vnd..cursor.item/
❑所有的專案
vnd..cursor.dir/
接下來的**片段顯示了如何重寫
gettype
方法來一句傳入的
uri來返回正確的
mime
型別:
@override
public string gettype(uri _uri) }註冊
provider
一旦完成了
content provider
,你必須將其新增到應用程式的
manifest
中。使用
authorities
標籤來指定它的路徑,如下面的
xml片段所示:
vfork(建立乙個新的程序)
vfork 建立乙個新的程序 相關 函式wait,execve 標頭檔案 include 定義函式 pid t fork void 函式說明 vfork 會產生乙個新的子程序.但是vfork建立的子程序與 父程序共享 資料段,而且由vfork建立的 vfork 用法與fork 相似.但是也有區別,具...
建立乙個新的視覺介面
基本的 view 類代表乙個全空的100 100 畫素的正方形。為了改變控制項的大小和顯示更炫的視覺效果,最具代表的,你需要重寫 onmeasure 和ondraw 方法。在 onmeasure 方法裡,新的 view 會依據給的邊界條件來計算它要佔據的高度和寬度。在 ondraw 方法裡,通過在畫...
VC如何建立乙個新的執行緒
使用mfc開發是較普遍的vc 程式設計方法。在vc 6.0下,mfc應用程式的執行緒由cwinthread物件表示。vc 把執行緒分為兩種 使用者介面執行緒和工作者執行緒。使用者介面執行緒能夠提供介面和使用者互動,通常用於處理使用者輸入並相應各種事件和訊息 而工作者執行緒主要用來處理程式的後台任務。...