執行在單獨程序中的ContentProvider

2021-06-18 15:42:50 字數 1778 閱讀 3092

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

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

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**時,會發現

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 ...