最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android 多進(jìn)程資料總結(jié)

 更新時(shí)間:2016年09月22日 15:14:49   作者:白一辰  
這篇文章主要介紹了Android 多進(jìn)程資料總結(jié)的相關(guān)資料,需要的朋友可以參考下

溫故而知新

網(wǎng)上說多進(jìn)程的文章很多,不過基本都是在討論很深的東西,這是需要去專研的,而我是來這篇是用來偷懶的(應(yīng)用層次),記錄的都是自己對(duì)多進(jìn)程的理解,方便以后用到的時(shí)候來偷懶,如果有錯(cuò),請(qǐng)指教,小小程序員萬分感謝。

講進(jìn)程,先來回答下面幾個(gè)問題:

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.干一些不可見人的勾當(dāng),比如(
A-> 心跳 ->B,如果B沒啟動(dòng),就啟動(dòng)B。
B-> 心跳 ->A,如果A沒啟動(dòng),就啟動(dòng)A。
簡(jiǎn)單說就是雙守護(hù)進(jìn)程來防止被用戶殺掉。)

6.怎么開啟多進(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)用來說是私有的。類似于我們注冊(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)用可以通過shareUID來跟它處于同一個(gè)進(jìn)程里面具有相同Uid的應(yīng)用可以共享數(shù)據(jù),可以互相訪問對(duì)方的私有數(shù)據(jù)(主席的書在多進(jìn)程那一節(jié)里面有講解)

9.多進(jìn)程有什么要注意的?

1.每次開啟多進(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ì)死去活來的,如果看完還沒死,請(qǐng)告訴我私有進(jìn)程和全局進(jìn)程的區(qū)別吧,我會(huì)獻(xiàn)上我一年份的膝蓋的~

通過此文希望能對(duì)Android多線程的資料掌握,謝謝大家對(duì)本站的支持!

相關(guān)文章

最新評(píng)論

凤翔县| 鲁甸县| 龙川县| 清河县| 株洲市| 周口市| 徐闻县| 云安县| 马尔康县| 基隆市| 伊春市| 灌云县| 上高县| 闵行区| 土默特右旗| 孝昌县| 汝南县| 韶关市| 柳林县| 博客| 永靖县| 合阳县| 广东省| 福建省| 乌拉特后旗| 冀州市| 五家渠市| 屯昌县| 镶黄旗| 自贡市| 瑞昌市| 积石山| 邵阳县| 邮箱| 中超| 开封市| 墨玉县| 汝阳县| 白河县| 利辛县| 吐鲁番市|