PS:這里不討論兩個(gè)應(yīng)用之間的多進(jìn)程情況描函。(噴子勿擾)
PS:這里不討論兩個(gè)應(yīng)用之間的多進(jìn)程情況搂蜓。(噴子勿擾)
PS:這里不討論兩個(gè)應(yīng)用之間的多進(jìn)程情況。(噴子勿擾)
1. 開啟多進(jìn)程模式
在Android中使用多進(jìn)程只有一種方式蹦漠,那就是給四大組件在AndroidMenifest中指定android:process屬性蹭睡,除此之外,沒有其他的辦法枢舶。也就是說我們無法給一個(gè)線程或者一個(gè)實(shí)體類指定其運(yùn)行時(shí)所在的進(jìn)程
其實(shí)還有另外一種非常規(guī)多進(jìn)程方法懦胞,那就是通過JNI在native層去fork一個(gè)新的進(jìn)程,但是這種方法屬于特殊情況凉泄,也不是常用的創(chuàng)建多進(jìn)程的方式躏尉,并且我也不會(huì),所以級(jí)就不考慮了后众。
咱們看圖說話胀糜,包名為com.example.text稼锅,SecondActivity的進(jìn)程為com.example.text:remote,ThirdActivity的進(jìn)程為com.example.text.remote僚纷。當(dāng)然看到這里你或許以為進(jìn)程也不過如此啊矩距,這么簡單,對(duì)此怖竭,我只能呵呵一笑锥债,這只是開始好嗎。
2. 查看進(jìn)程的方法
可以再eclipse的DDMS里邊查看痊臭,什么哮肚?你用的android studio,不用eclipse广匙,這個(gè)不會(huì)也要我告訴你吧允趟,那是不可能的,你可以這樣百度鸦致,當(dāng)然你也可以在android studio的命令符里邊使用adb shell ps或者adb shell ps | 包名查看 但是不知道為什么最后一種查看方式我是用不了潮剪,知道的請(qǐng)?jiān)谠u(píng)論里邊回復(fù),謝謝7滞佟抗碰!
讀者朋友應(yīng)該注意到了SecondActivity的進(jìn)程是:remote,而實(shí)際操作過的朋友應(yīng)該會(huì)發(fā)現(xiàn)他的進(jìn)程名變成了com.example.text:remote绽乔,其實(shí)“ : ”的含義是指在當(dāng)前進(jìn)程名前加上當(dāng)前的包名弧蝇,這是一種簡寫的方法。而ThirdActivity是一種完整的命名方法折砸。需要注意的是“ : ”開頭的進(jìn)程屬于當(dāng)前應(yīng)用的私有進(jìn)程看疗,其他的應(yīng)用的組件不可以和他泡在同一個(gè)進(jìn)程里邊,而進(jìn)程名不以“ : ”開頭的屬于全局進(jìn)程睦授,其他的應(yīng)用通過ShareUID方式可以和它跑在同一個(gè)進(jìn)程里邊两芳,
我們知道Android系統(tǒng)會(huì)為每個(gè)引用分配一個(gè)并且唯一的UID,具有相同UID的應(yīng)用才能共享數(shù)據(jù)睹逃。這里要說明的是盗扇,兩個(gè)引用通過ShareUID跑在同一個(gè)進(jìn)程里是有要求的祷肯,需要這兩個(gè)應(yīng)用具有相同的ShareUID并且簽名相同才可以沉填。在這種情況下,可以互相訪問對(duì)方的私有數(shù)據(jù)佑笋,比如data目錄翼闹,組件信息等,不管他們是否跑在同一個(gè)進(jìn)程蒋纬。當(dāng)然如果它們跑在同一個(gè)進(jìn)程中猎荠,除了能共享data目錄坚弱,組件信息,還可以共享內(nèi)存數(shù)據(jù)关摇,或者說他們看起來就像是一個(gè)應(yīng)用的兩個(gè)部分荒叶。
問題補(bǔ)充
今天求教了大神問了下查看進(jìn)程的方式,原來是因?yàn)槲姨幚礤e(cuò)了输虱,需要先進(jìn)入adb shell里邊然后在輸入ps | 包名 就可以完成查看本項(xiàng)目的進(jìn)程了些楣。