乙個apk(就是乙個包)一般佔乙個dalvik,乙個程序。(可以設定乙個apk佔多個程序,多個apk佔乙個程序)
乙個task可有佔多個程序(相當於裝了多個應用(乙個應用跳轉另乙個應用acitivity就是這種情況))。
預設情況下,同乙個應用程式中的所有元件執行在同乙個程序中,而且絕大多數的應用程式也都是這樣的。但是,如果我們想要控制讓某個特定的元件屬於某個程序,我們可以在manifest檔案中進行配置。
在每種元件元素(activity、service、receiver、provider)的manifest條目中,都支援乙個 「android:process」的屬性,通過這個屬性,我們可以指定某個元件執行的程序。我們可以通過設定這個屬性,讓每個元件執行在它自己的程序中,也可以只讓某些元件共享乙個程序。我們要可以通過設定「android:process」屬性,讓不同應用程式中的元件執行在相同的程序中,這些應用程式共享相同的linux使用者id,擁有相同的證書。
當可用記憶體數量低,而一些與使用者即時互動的程序又需要記憶體時,android隨時可能會終止某個程序。執行在被終止的程序中的元件會因此被銷毀,但是,當再次需要這些元件工作時,就會再啟動乙個程序。
在決定要終止哪個程序時,android系統會權衡它們對於使用者的重要性。例如,相較於執行可見activities的程序,終止乙個執行不可見activities的程序會更加合理。是否終止乙個程序,依賴於執行在這個程序中的元件的狀態。
(1)設定相同的user id:
1.同一apk中的同一包中的activity呼叫時程序狀況驗證程序列表沒有變化,兩個activity執行在同一程序中。
2.同一apk中的不同包的activity呼叫時程序狀況驗證程序列表沒有變化,兩個activity執行在同一程序中。即程序name只受androidmanifest.xml中manifset結點的package屬性影響。
3.同一apk中activity process屬性修改後程序狀況驗證
xml**
<
activity
android:name
="com.demo.second.secondactivity"
android:process
=":abc"
>
activity
>
程序表多了一項。兩個activity各自有乙個程序,secondactivity的程序名稱為 包名+字尾
4.不同apk中不同包名的activity程序狀況驗證程序表多了一項。兩個activity各自有乙個程序,同時其程序使用者名稱、包名也不同,互不影響。
5.不同apk,簽名相同、包名相同的activity程序狀況驗證程序表只有一項,但是實際上firstproject此時已經被覆蓋了,系統中只存在secondproject了,因為模擬器除錯時apk使用的簽名key都是一樣的,系統看到key一樣,包名一樣認為這個包就是firstproject所以覆蓋掉了。可以通過ddms複製/data/system/packages.xml檢視一下內容。
xml**
<
package
name
="com.demo"
codepath
=system
="false"ts=
"1279955425000"
version
="1"
userid
="10036"
>
6.不同apk,簽名不相同,包名相同的activity程序狀況驗證
7.不同apk,share user id相同,包名不同時程序情況分析
xml**
android:shareduserid
="com.demouser"
xml**
<
package
name
="com.demo"
codepath
=system
="false"ts=
"1279957484000"
version
="1"
shareduserid
="10035"
>
xml**
<
package
name
="com.demo2"
codepath
=system
="false"ts=
"1279957473000"
version
="1"
shareduserid
="10035"
>
8.不同apk,share user id相同,包名不同、指定activity的process屬性程序情況分析
xml**
<
activity
android:name
=".mainactivity"
android:label
=android:process
="com.demo"
>
9.不同apk,share user id相同,包名不同、簽名key不同
簽名不同:新的apk會安裝失敗。【簽名key一般都是不同的】
殭屍程序和孤兒程序區別
在unix linux中,正常情況下,子程序是通過父程序建立的,子程序在建立新的程序。子程序的結束和父程序的執行是乙個非同步過程,即父程序永遠無法 子程序 到底什麼時候結束。當乙個 程序完成它的工作終止之後,它的父程序需要呼叫wait 或者waitpid 系統呼叫取得子程序的終止狀態。孤兒程序 乙個...
區別之守護程序 孤兒程序 殭屍程序
殭屍程序是 乙個程序使用fork建立子程序,如果子程序退出,而父程序並沒有呼叫wait或waitpid獲取子程序的狀態資訊,那麼子程序的程序描述符仍然儲存在系統中。這種程序稱之為僵死程序。孤兒程序是因為父程序異常結束了,然後被1號程序init收養。守護程序是建立守護程序時有意把父程序結束,然後被1號...
php 程序區別認識
cgi全稱是 公共閘道器介面 fastcgi像是乙個常駐 long live 型的cgi cgi,fastcgi也具有語言無關性.php cgi是php自帶的fastcgi管理器。fastcgi的不足 因為是多程序,所以比cgi多執行緒消耗更多的伺服器記憶體,php cgi直譯器每程序消耗7至25兆...