1. 程式人生 > >Android學習筆記29——IPC機制

Android學習筆記29——IPC機制

IPC機制簡介

IPC是Inter-Process Communication的縮寫,含義為多程序間通訊或者跨程序通訊,是指兩個程序之間進行資料交換的過程。這裡又涉及到什麼程序,什麼是執行緒的理念了。

程序

程序,一般是指一個執行單元,在PC和移動裝置上指一個程式或者一個應用。

執行緒

按照作業系統中的描述,執行緒是CPU排程最小的單元,同時執行緒是有限的系統資源。

程序和執行緒的關係

一個程序可以包含多個執行緒,因此程序和執行緒是包含和被包含的關係。舉個例子,一個程序可以只有一個執行緒,即主執行緒,在Android裡面主執行緒也叫UI執行緒,在UI執行緒中才能操作介面元素(或者是控制元件)。

ANR(應用無響應)

ANR圖片
很多時候,一個程序中需要執行大量耗時任務,如果這些任務放在主執行緒中去執行就會造成介面無法響應,嚴重影響使用者體驗,這種情況在PC系統和移動系統中都存在,在Android中有一個特殊的名字叫做ANR(Application Not Responding),即應用無響應。
解決辦法:這個問題就需要用到執行緒,把一些耗時的任務放到執行緒中執行。

Android的IPC機制

最開始提到IPC是跨程序通訊或者多程序通訊,但是IPC並不是Android獨有的通訊機制,那麼Android的IPC機制是什麼呢?

Android最有特色的程序間通訊是Binder,通過Binder可以輕鬆實現程序間通訊。除了Binder

,Android還支援Socket,通過Socket也可以實現任意兩個終端之間的通訊,當然一個裝置上的兩個程序通過Socket通訊自然也是可以的。

Android IPC機制使用場景:多程序

IPC機制是跨程序通訊機制,那麼它的使用場景就是多程序。多程序分為下面兩種情況:

  1. 一個應用因為某些原因吱聲需要採用多程序模式來實現,至於原因可能有很多,比如有些模組由於特殊原因需要執行在單獨的程序中,又 或者為了加大一個應用可以使用的記憶體所以需要多程序獲取多分記憶體空間。Android對單個應用使用的最大記憶體做了限制,早期的一些版本可能是16MB,不同的裝置有不同的大小。
  2. 當前應用需要向其他應用獲取資料,由於是兩個應用,所以我們必須採用跨程序的方法來獲取所需要的資料,甚至我們通過系統提供的ContentProvider
    去查詢資料的時候,其實也是一種程序間通訊,只是通訊細節被系統內部遮蔽了,我們沒有辦法感知而已。