本文為個人學習筆記分享,沒有任何商業化行為,對其他文章的引用都會标記。如有侵權行為,請及時提醒更正!如需轉載請表明出處
IPC 是 Inter-Process Communication 的縮寫,含義為進程間通訊或者跨進程通信,是指兩個進程之間進行數據交換的過程。說起進程通信,我們首先要理解什麼是進程,什麼是線程,進程和線程是截然不同的概念。
按照操作系統的描述,線程是CPU調度的最小單元,同時線程是一種有限的系統資源。而進程一般指一個執行單元,在PC和移動設備上指一個程序或者一個應用。一個進程可以包含多個線程,因此進程和線程是包含與被包含的關系。最簡單的情況下,一個進程中可以隻有一個線程,即主線程,在andorid裡面主線程也叫UI線程,在線程裡才能操作界面元素。很多時候,一個進程中需要執行大量耗時任務,如果這些任務放在主線程執行就會導緻界面無法響應,嚴重影響用戶體驗,這種情況在PC系統和移動系統中都存在,在Android中有一個特殊的名字ANR(Application Not Responding),即應用無響應。解決這個問題就需要用到線程,把一些耗時的任務放在線程中即可。
IPC不是Android特有的,任何一個操作系統都需要有相應的IPC機制,比如Windows上可以通過剪切闆、管道和油槽等來進行通信;Linux上可以通過命名管道、共享内存、信号量等來進行進程間通信。對于android來說,不完全繼承Linux,相反,他有自己的進程通信方式。在Android中最有特色的進程通信方式就是Binder了,通過Binder可以輕松的實現進程通信。除了Binder外,Android還支持Socket,通過Socket也可以實現兩個終端之間的通信,當然同一個設備上兩個不同的進程之間也可以通過Socket。
為什麼要采用多進程模式?1.有些模塊由于特殊的原因需要運行在單獨的進程中。
2.通過多進程可以獲取更多份的内存
3.當應用需要獲取其他應用的數據。
4.ContentProvider、Service、甚至平時startActivity 都用到了跨進程通信。
,更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!