apk,task,程序區別

2021-08-31 22:20:22 字數 2643 閱讀 3082

乙個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兆...