執行在單獨程序中的ContentProvider

2021-06-01 05:56:04 字數 1853 閱讀 4622

contentprovider既可以與呼叫方處在同一程序,也可以執行在單獨程序中,完全取決於contentprovider所處的aplication的程序資訊。因此假如contentprovider執行在單獨的程序中,那麼呼叫contentprovider將會涉及到ipc通訊。

既然涉及到ipc通訊,那麼contentprovider一定繼承自iinte***ce,這個iinte***ce就是icontentprovider,其主要的介面方法如下,

view plain

print?

public ibulkcursor bulkquery(uri url, string projection,  

string selection, string selectionargs, string sortorder, icontentobserver observer,  

cursorwindow window) throws remoteexception;  

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

string selectionargs, string sortorder) throws remoteexception;  

public string gettype(uri url) throws remoteexception;  

public uri insert(uri url, contentvalues initialvalues)  

throws remoteexception;  

public

int bulkinsert(uri url, contentvalues initialvalues) throws remoteexception;  

public

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

throws remoteexception;  

public

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

string selectionargs) throws remoteexception;  

public parcelfiledescriptor openfile(uri url, string mode)  

throws remoteexception, filenotfoundexception;  

public assetfiledescriptor openassetfile(uri url, string mode)  

throws remoteexception, filenotfoundexception;  

但是閱讀contentprovider**時,會發現

view plain

print?

public

abstract

boolean oncreate();  

public

void onconfigurationchanged(configuration newconfig);  

public

void onlowmemory();  

這幾個方法並不在icontentprovider中宣告,因此千萬注意它們在執行時並不是處在androidmanifest.xml中宣告時的程序中。而是處在呼叫contentprovider的應用的程序中的。

因此千萬不要在oncreate中新增你期望執行在contentprovider的程序的**。

執行在單獨程序中的ContentProvider

contentprovider既可以與呼叫方處在同一程序,也可以執行在單獨程序中,完全取決於contentprovider所處的aplication的程序資訊。因此假如contentprovider執行在單獨的程序中,那麼呼叫contentprovider將會涉及到ipc通訊。既然涉及到ipc通訊,...

讓程序執行在指定的CPU

我的linode十分繁忙,在跑一些密集運算元據庫的rake任務時尤其如此。但我觀察發現,linode伺服器的4核cpu,只有第1個核心 cpu 0 非常忙,其他都處於idle狀態。不了解linux是如何排程的,但在linode的這種狀態下,顯然有優化的餘地。除了處理正常任務,cpu 0還需要處理各種...

C 將程序執行在指定的CPU上

方法 setprocessaffinitymask handle,dword 其中,第乙個引數為程序控制代碼。如果要知道當前執行緒的控制代碼,可以通過函式 getcurrentthread 得到。否則,在建立多執行緒的時候,也同樣可以得到建立的執行緒的控制代碼。第二個引數為mask,可取值為0 2 ...