一、android應用多程序
正常情況下,乙個apk啟動後只會執行在乙個程序中,其程序名為androidmanifest.xml檔案中指定的應用包名,所有的基本元件都會在這個程序中執行。但是如果需要將某些元件(如service、activity等)執行在單獨的程序中,就需要用到android:process屬性了。我們可以為android的基礎元件指定process屬性來指定它們執行在指定程序中。多程序能突破單程序記憶體大小的控制,防止oom。
對process屬性的設定有兩種形式: 第一種形式如android:process=":remote",以冒號開頭,冒號後面的字串原則上是可以隨意指定的。如果我們的包名為「com.example.processtest」,則實際的程序名為「com.example.processtest:remote」。
這種設定形式表示該程序為當前應用的私有程序,其他應用的元件不可以和它跑在同乙個程序中。
第二種情況如 android:process="com.example.processtest.remote",以小寫字母開頭,表示執行在乙個以這個名字命名的全域性程序中,其他應用通過設定相同的shareuid可以和它跑在同乙個程序。
由於新開啟程序,所以需注意下面兩點:
2)靜態成員的失效。
//舉例
......
二、多應用程式跑同一程序
供參考使用方法
1、首先在兩個程式的manifest檔案中的manifest節點下面設定相同的shareduserid,比如: android:shareduserid="com.test"
2、在需要獲取資料的程式中建立另外乙個程式的上下文引用context,
context context = createpackagecontext("com.excellence.weather", context.context_ignore_security);其中的第乙個引數是另外乙個程式的包名,這樣就可以利用這個context像訪問自己程式的資源一樣訪問被共享的程式的資源,例如:
sharedpreferences sharedpreferences = context.getsharedpreferences(sharedpreferences_userinfo, context.mode_world_readable);
3、匯出成apk的時候使用相同的簽名
resourceid 共享方法
1、使用sharedpreferences傳遞
2、使用相同的資源名
三、獲取應用程式開啟程序個數及程序名
activitymanager mactivitymanager = (activitymanager) getsystemservice(context.activity_service);
說明: 封裝了正在執行的程序資訊
常用字段 :
int pid 程序id
int uid 程序所在的使用者id
string processname 程序名,預設是包名或者由android:process=」」屬性指定
string [ ] pkglist 執行在該程序下的所有應用程式包名
常用字段方法 :
string packagename
應用名 string packagename
應用包名
string loadlabel()
獲取應用標籤
string loadicon()
獲取應用圖示
獲取當前執行的應用程式開啟的程序列表:
1、獲得系統裡正在執行的所有程序
2、根據程序的pkglist列表裡所有包名,在安裝的應用目錄下查詢
3、根據查詢到的應用,得到標籤圖示等
Android 應用實現多程序
android service 跨程序實現 同乙個應用程式中實現多個程序通訊 通訊機制 使用aidl通訊 具體步驟 1 新建aidl檔案 例 iclickaidlinte ce.aidl inte ce iclickaidlinte ce 以上步驟,如果沒有差錯,重新編譯,會自動生成乙個 iclic...
android 多程序程式設計 必看!
關於程序的基礎概念不再贅述 首先討論如果乙個程式內存在多個程序時建立順序 看如下 public static int test 0 override public void oncreate servicea在配置檔案裡標明了使用單獨程序 大家是不是覺得步驟是這樣,現實比想像嚴峻的多啊,先看看log...
程序與多程序概念
程序 process 是計算機中程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統機結構基礎。狹義定義 程序是正在執行的程式的例項。在同一時間,同一作業系統中有兩個或兩個以上的程式處於執行狀態。php 提供了程序控制的擴充套件 pcntl。pcntl 實現了unix ...