Android開啟多程式及程式間通訊的幾種方式

_小馬快跑_發表於2017-12-15
  • 程式 首先來看程式的定義: **程式是指一個執行單元,在PC和移動裝置上是指一個程式或者一個應用。**而執行緒是CPU排程的最小單元,同時執行緒是一種有限的系統資源,一個程式可以包含多個執行緒,因此程式和執行緒是包含與被包含的關係,當某個應用元件啟動且該應用沒有執行其他任何元件時,Android 系統會使用單個執行執行緒為應用啟動新的 Linux 程式。預設情況下,同一應用的所有元件在相同的程式和執行緒(稱為“主”執行緒)中執行。

  • 開啟多程式 多程式的好處: 1、增大應用的可使用記憶體,Android對應用的最大記憶體記憶體做了限制,開啟多程式可以申請到多塊記憶體,應用中記憶體消耗比較大的模組,可以考慮新開一個程式。 2、多程式可以防止整個程式崩潰,假如新開的程式崩潰了,那麼會返回到主程式中,而不會導致整個程式崩潰。 如果客戶端和服務端不再同一個應用,預設就是兩個程式;如果在一個應用內開啟多程式,在AndroidManifest.xml檔案中的四大元件   和  均支援 android:process屬性來開啟多程式。通過設定此屬性,可以使每個元件均在各自的程式中執行,或者使一些元件共享一個程式,而其他元件則不共享。Android預設程式名是即是包名。 android:process的設定有兩種: 1、android:process="xxx.xxx.xxxx.remote" 完整的命名方式,屬於全域性程式,其它應用通過ShareUID方式可以和它跑在同一個程式中。 2、android:process=":remote",“:”的含義是要在當前程式名前面加上包名,程式名以“:”開頭是屬於私有程式,其他應用不可訪問。

  • 多程式帶來的問題 (1).靜態成員和單例模式完全失效 (2).執行緒同步機制完全失效 (3).SharedPreference的可靠性下降 (4).Application會多次建立

  • 程式間通訊 IPC是Inter-Process Communication的縮寫,含義為程式間通訊或者跨程式通訊,是指兩個程式之間進行資料交換的過程。程式間通訊的幾種方式:Intent傳遞資料,檔案共享,Messenger,AIDL,ContentProvider,Socket等。 1、Intent 只能傳遞簡單的物件,物件必須實現Pacelable介面序列化,使用例子:多程式通訊之Intent 2、Messenger基於訊息(Message)實現程式間通訊,服務端是序列執行客戶端請求的,底層實現是AIDL,詳細請看:程式間通訊之Messenger 3、允許不同應用的客戶端用 IPC 方式訪問服務,並且可以在服務端處理多執行緒,詳細請看:程式間通訊之AIDL 4、程式間通訊還可以通過繼承Binder來實現,詳細請看:繼承Binder類實現多程式通訊

相關文章