android IPC 機制 (開發藝術探索)

來源:互聯網
上載者:User

標籤:之間   交換   通訊   UI   資源   name   font   serial   ack   

一、IPC 機制介紹

  IPC是Inter-Process Communication的縮寫,含義就是處理序間通訊或者跨進程通訊,是指兩個進程之間進行資料交換的過程。那麼什麼是進程,什麼是線程,進程和線程是兩個截然不同的概念。在作業系統中,線程是CPU調度的最小單元,同時線程是一種有限的系統資源。而進程指的一個執行單元,在PC和行動裝置上指的是一個程式或者一個應用。一個進程可以包含多個線程,因此進程和線程是包含被包含的關係,最簡單情況下,一個進程可以只有一個線程,即主線程,在Android裡面也叫UI線程,在UI線程裡才能操作介面元素。

1.1  Android中為什麼要開啟多進程

(1)分擔主進程的記憶體壓力。

  當應用越做越大,記憶體越來越多,將一些獨立的組件放到不同的進程,它就不佔用主進程的記憶體空間了。比如在啟動一個不可見的輕量級私人進程,在後台收發訊息,或者做一些耗時的事情,或者開機啟動這個進程等。

(2)防止主進程被殺守護進程,守護進程和主進程之間相互監視,有一方被殺就重新啟動它。

1.2 如何開啟多進程

   四大組件在AndroidManifest檔案中註冊的時候,有個屬性android:process這裡可以指定組件的所處的進程。預設情況下的進程名就是包名。指定為別的進程之後,系統在啟動這個組件的時候,就先建立(如果還沒建立的話)這個進程,然後再建立該組件。

  擷取進程id和進程名:

     String processName = "";        ActivityManager manager = (ActivityManager) getApplicationContext()                .getSystemService(Context.ACTIVITY_SERVICE);        for (ActivityManager.RunningAppProcessInfo process: manager.getRunningAppProcesses()) {            if(process.pid == Process.myPid())            {                processName = process.processName;            }        }        Log.d(TAG, "Main:   "+ Process.myTid()+"    "+processName);

需要注意的是 運行在不同進程中的組件是屬於不同的虛擬機器和application。當某個應用有三個進程時則它的Application的oncreate會執行三次。

1.3 Android中開啟多進程有哪些弊端

 (1)多佔了系統的記憶體空間,很容易沾滿而導致卡頓,同時也消耗使用者的電量。同時在啟動單獨進程時,進程的建立會影響繼承Application的執行個體,onCreate()會再次執行一遍。

 (2)不同進程之間記憶體不能共用,最大的弊端是他們之間通訊麻煩,不能將公用資料放在Application中,堆棧資訊、檔案操作也是獨立的,如果他們之間傳遞的資料不大並且是可序列化的,可以考慮通過Bundle傳遞, 如果資料量較大,則需要通過AIDL或者檔案操作來實現。

  一般在安卓中使用多進程需要注意以下問題:

  • 靜態成員和單例模式完全失效
  • 線程同步機制完全失效
  • SharedPreferences的可靠性下降
  • Application會多次建立

  為瞭解決這個問題,系統提供了很多跨進程通訊方法,雖然說不能直接地共用記憶體,但是通過跨進程通訊我們還是可以實現資料互動。實現跨進程通訊的方式有很多,比如通過Intent來傳遞資料,共用檔案SharedPreference,基於Binder的Messenger和AIDL以及Socket等。

二、IPC 基礎概念

  主要介紹IPC中的基礎概念,主要包括三個方面,Serializable 及 Parcelable 介面以及Binder。

  2.1 Serializable 及 Parcelable 介面 

    參考:http://www.cnblogs.com/renqingping/archive/2012/10/25/Parcelable.html

  2.2 Binder

 

三、Android中的IPC方式

 

android IPC 機制 (開發藝術探索)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.