Android多進程使用很簡單莺戒,只需要在AndroidManifest.xml
的聲明四大組件的標簽中增加android:process
屬性即可灶泵,process分私有進程和全局進程,私有進程的名稱前面有冒號摆舟,全局進程沒有,全局進程可以與其他應用通過相同的SharedUID
共享。
Android系統(tǒng)會為每個應用分配一個唯一的UID隙轻,具有相同UID的應用才能共享數(shù)據(jù)埠帕。兩個應用通過ShareUID跑在同一個進程中是有要求的,需要這兩個應用有相同的ShareUID并且簽名相同才可以玖绿。在這種情況下敛瓷,它們可以互相訪問對方的私有數(shù)據(jù),比如data目錄斑匪、組件信息等呐籽,不管它們是否跑在同一個進程中。當然如果它們跑在同一個進程中蚀瘸,那么除了能共享data目錄狡蝶、組件信息,還可以共享內(nèi)存數(shù)據(jù)贮勃,或者說它們看起來就像是一個應用的兩個部分贪惹。
如果應用內(nèi)有多個進程,每創(chuàng)建一個進程就會跑一次Application
的onCreate
方法衙猪,每個進程內(nèi)存都是獨立的馍乙。
不同進程之間內(nèi)存不能共享,最大的弊端是他們之間通信麻煩垫释,不能將公用數(shù)據(jù)放在Application
中丝格,堆棧信息、文件操作也是獨立的棵譬,如果他們之間傳遞的數(shù)據(jù)不大并且是可序列化的显蝌,可以考慮通過Bundle傳遞, 如果數(shù)據(jù)量較大订咸,則需要通過AIDL或者文件操作來實現(xiàn)曼尊。