Android 多進(jìn)程資料總結(jié)
溫故而知新
網(wǎng)上說(shuō)多進(jìn)程的文章很多,不過(guò)基本都是在討論很深的東西,這是需要去專(zhuān)研的,而我是來(lái)這篇是用來(lái)偷懶的(應(yīng)用層次),記錄的都是自己對(duì)多進(jìn)程的理解,方便以后用到的時(shí)候來(lái)偷懶,如果有錯(cuò),請(qǐng)指教,小小程序員萬(wàn)分感謝。
講進(jìn)程,先來(lái)回答下面幾個(gè)問(wèn)題:
1.什么是線程?
線程就是程序中單獨(dú)執(zhí)行的流控制。
2.什么是多線程?
多線程就是單個(gè)程序中執(zhí)行多個(gè)流控制。作用就是最大限度的使用CPU資源。
3.什么是進(jìn)程?
一般指的是一個(gè)執(zhí)行單元,即一個(gè)應(yīng)用程序(Android中就是一個(gè)應(yīng)用)。
4.線程和進(jìn)程的關(guān)系?
一個(gè)進(jìn)程可以有多個(gè)線程,進(jìn)程與線程是包含與被包含的關(guān)系。
5.為什么要用多進(jìn)程?
1.單進(jìn)程所分配的內(nèi)存不夠,需要更多的內(nèi)存。
2.需要運(yùn)行一個(gè)獨(dú)立的組件。
3.干一些不可見(jiàn)人的勾當(dāng),比如(
A-> 心跳 ->B,如果B沒(méi)啟動(dòng),就啟動(dòng)B。
B-> 心跳 ->A,如果A沒(méi)啟動(dòng),就啟動(dòng)A。
簡(jiǎn)單說(shuō)就是雙守護(hù)進(jìn)程來(lái)防止被用戶殺掉。)
6.怎么開(kāi)啟多進(jìn)程?
AndroidManifest.xml中設(shè)置android:process=":remote"
<service android:name=".remoteService" android:label="@string/app_name" android:process=":remote"/>
Activity中啟動(dòng)這個(gè)服務(wù)
Intent mIntent = new Intent(this, remoteService.class); startService(mIntent);
7.":remote"中,冒號(hào)是個(gè)什么鬼?
它不是鬼,android:process表示這個(gè)組件跑在什么鬼進(jìn)程里,就是進(jìn)程名。用:的意思是表示這是這個(gè)進(jìn)程對(duì)于啟動(dòng)它的應(yīng)用來(lái)說(shuō)是私有的。類(lèi)似于我們注冊(cè)Activity省略包名一樣。如果我們的包名是com.example.whitelaning,那這個(gè) android:process=":remote"的進(jìn)程的名字就是"com.example.whitelaning:remote"。
8.私有進(jìn)程和全局進(jìn)程有什么區(qū)別?
我也想知道%>_<%有人知道請(qǐng)指教
夜雨寄北大大回復(fù)是,e帶:的表示是當(dāng)前應(yīng)用的私有進(jìn)程,其他應(yīng)用的組件不可以跟它跑在同一個(gè)進(jìn)程里面,而對(duì)于全局進(jìn)程,其他應(yīng)用可以通過(guò)shareUID來(lái)跟它處于同一個(gè)進(jìn)程里面具有相同Uid的應(yīng)用可以共享數(shù)據(jù),可以互相訪問(wèn)對(duì)方的私有數(shù)據(jù)(主席的書(shū)在多進(jìn)程那一節(jié)里面有講解)
9.多進(jìn)程有什么要注意的?
1.每次開(kāi)啟多進(jìn)程,Application都會(huì)重新執(zhí)行一遍,所以如果你在Application做了很多初始化的工作,那就需要判斷是哪個(gè)進(jìn)程啟動(dòng)的Application了。
方法:
public class MyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
int pid = android.os.Process.myPid();
String processNameString = "";
ActivityManager mActivityManager = (ActivityManager)this.getSystemService(getApplicationContext().ACTIVITY_SERVICE);
for (ActivityManager.RunningAppProcessInfo appProcess : mActivityManager.getRunningAppProcesses()) {
if (appProcess.pid == pid) {
processNameString = appProcess.processName;
}
}
if("com.example.whitelaning".equals(processNameString)){
//do Something
} else {
//do Something
}
}
}
2.多進(jìn)程會(huì)使單例模式失效,因?yàn)閮蓚€(gè)線程的內(nèi)存是隔離的。
10.還有什么要知道的?
去看源碼吧,你會(huì)死去活來(lái)的,如果看完還沒(méi)死,請(qǐng)告訴我私有進(jìn)程和全局進(jìn)程的區(qū)別吧,我會(huì)獻(xiàn)上我一年份的膝蓋的~
通過(guò)此文希望能對(duì)Android多線程的資料掌握,謝謝大家對(duì)本站的支持!
- Android應(yīng)用開(kāi)發(fā)SharedPreferences存儲(chǔ)數(shù)據(jù)的使用方法
- Android 動(dòng)畫(huà)之TranslateAnimation應(yīng)用詳解
- Android 動(dòng)畫(huà)之ScaleAnimation應(yīng)用詳解
- Android開(kāi)發(fā)中多進(jìn)程共享數(shù)據(jù)簡(jiǎn)析
- Android 進(jìn)程間通信實(shí)現(xiàn)原理分析
- Android應(yīng)用程序四大組件之使用AIDL如何實(shí)現(xiàn)跨進(jìn)程調(diào)用Service
- Android編程防止進(jìn)程被第三方軟件殺死的方法
- 解析后臺(tái)進(jìn)程對(duì)Android性能影響的詳解
- Android結(jié)束進(jìn)程的方法詳解
- Android中應(yīng)用多進(jìn)程的整理總結(jié)
相關(guān)文章
Android中使用Vectors(2)繪制優(yōu)美的路徑動(dòng)畫(huà)
這篇文章主要介紹了Android中使用Vectors(2)繪制優(yōu)美的路徑動(dòng)畫(huà)的相關(guān)資料,需要的朋友可以參考下2016-03-03
Android 指紋識(shí)別開(kāi)發(fā)實(shí)例
這篇文章主要介紹了Android6.0 指紋識(shí)別開(kāi)發(fā)實(shí)例的相關(guān)資料,需要的朋友可以參考下2016-09-09
Android?Jetpack組件Lifecycle源碼解析
這篇文章主要為大家介紹了Android?Jetpack組件Lifecycle源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
詳解Android中的ActivityThread和APP啟動(dòng)過(guò)程
ActivityThread就是我們常說(shuō)的主線程或UI線程,ActivityThread的main方法是整個(gè)APP的入口,本篇深入學(xué)習(xí)下ActivityThread,順便了解下APP和Activity的啟動(dòng)過(guò)程。2021-06-06
Flutter之Timer實(shí)現(xiàn)短信驗(yàn)證碼獲取60s倒計(jì)時(shí)功能的代碼
這篇文章主要介紹了Flutter之Timer實(shí)現(xiàn)短信驗(yàn)證碼獲取60s倒計(jì)時(shí)功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-07-07
Android onMeasure與onDraw及自定義屬性使用示例
這篇文章主要介紹了Android onMeasure與onDraw及自定義屬性使用示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2023-02-02
Android使用OkHttp進(jìn)行網(wǎng)絡(luò)同步異步操作
這篇文章主要為大家詳細(xì)介紹了Android使用OkHttp進(jìn)行網(wǎng)絡(luò)同步異步操作,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-07-07
Android開(kāi)發(fā)筆記XML數(shù)據(jù)解析方法及優(yōu)缺點(diǎn)
XML數(shù)據(jù)是一種常見(jiàn)的數(shù)據(jù)格式,Android開(kāi)發(fā)中需要對(duì)其進(jìn)行解析。常用的XML解析方式有DOM、SAX、Pull和Json等,每種方式都有其優(yōu)缺點(diǎn)。開(kāi)發(fā)者可以根據(jù)具體需求選擇合適的解析方式,提高數(shù)據(jù)解析效率和性能2023-05-05

