Android 多進程資料總結_Android

來源:互聯網
上載者:User

溫故而知新

網上說多進程的文章很多,不過基本都是在討論很深的東西,這是需要去專研的,而我是來這篇是用來偷懶的(應用程式層次),記錄的都是自己對多進程的理解,方便以後用到的時候來偷懶,如果有錯,請指教,小小程式員萬分感謝。

講進程,先來回答下面幾個問題:

1.什麼是線程?

線程就是程式中單獨執行的流量控制。

2.什麼是多線程?

多線程就是單個程式中執行多個流量控制。作用就是最大限度的使用CPU資源。

3.什麼是進程?

一般指的是一個執行單元,即一個應用程式(Android中就是一個應用)。

4.線程和進程的關係?

一個進程可以有多個線程,進程與線程是包含與被包含的關係。

5.為什麼要用多進程?

1.單進程所分配的記憶體不夠,需要更多的記憶體。
2.需要運行一個獨立的組件。
3.幹一些不可見人的勾當,比如(
A-> 心跳 ->B,如果B沒啟動,就啟動B。
B-> 心跳 ->A,如果A沒啟動,就啟動A。
簡單說就是雙守護進程來防止被使用者殺掉。)

6.怎麼開啟多進程?

AndroidManifest.xml中設定android:process=":remote"

<service  android:name=".remoteService"  android:label="@string/app_name"  android:process=":remote"/>

Activity中啟動這個服務

Intent mIntent = new Intent(this, remoteService.class);startService(mIntent);

7.":remote"中,冒號是個什麼鬼?

它不是鬼,android:process表示這個組件跑在什麼鬼進程裡,就是進程名。用:的意思是表示這是這個進程對於啟動它的應用來說是私人的。類似於我們註冊Activity省略包名一樣。如果我們的包名是com.example.whitelaning,那這個 android:process=":remote"的進程的名字就是"com.example.whitelaning:remote"。

8.私人進程和全域進程有什麼區別?

我也想知道%>_<%有人知道請指教
夜雨寄北大大回複是,e帶:的表示是當前應用的私人進程,其他應用的組件不可以跟它跑在同一個進程裡面,而對於全域進程,其他應用可以通過shareUID來跟它處於同一個進程裡面具有相同Uid的應用可以共用資料,可以互相訪問對方的私人資料(主席的書在多進程那一節裡面有講解)

9.多進程有什麼要注意的?

1.每次開啟多進程,Application都會重新執行一遍,所以如果你在Application做了很多初始化的工作,那就需要判斷是哪個進程啟動的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.多進程會使單例模式失效,因為兩個線程的記憶體是隔離的。

10.還有什麼要知道的?

去看源碼吧,你會死去活來的,如果看完還沒死,請告訴我私人進程和全域進程的區別吧,我會獻上我一年份的膝蓋的~

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.