Android 進程間通信的方式

1、通過單向數據管道傳遞數據

管道(使用PipedWriter/ 創建PipedReader)是java.io包的一部分。也就是說,它們是一般的Java功能,而不是Android特定的。管道爲同一進程內的兩個線程提供了一種連接和建立單向數據通道的方法。生產者線程將數據寫入管道,而使用者線程從管道讀取數據。

2、共享內存通信

共享內存(使用編程中已知的內存區域作爲堆)是在線程之間傳遞信息的常用方法。應用程序中的所有線程都可以訪問進程中的相同地址空間。

3、實現消費者 - 生產者模式 BlockingQueue

線程信令是一種低級,高度可配置的機制,可以適應許多用例,但它也可能被認爲是最容易出錯的技術。因此,Java平臺在線程信令機制上構建高級抽象,以解決線程之間的任意對象的單向切換。抽象通常被稱爲“解決生產者 - 消費者同步問題。”問題包括可能存在生成內容的線程(生產者線程)和消費內容的線程(消費者線程)的用例。生產者將消息傳遞給消費者進行處理。線程之間的中介是具有阻塞行爲的隊列,即java.util.concurrent.BlockingQueue。

4、消息隊列

消息處理機制是Android平臺的基礎,API位於android.os包中,其中包含一組實現該功能的類Handler。

android.os.Looper
與唯一的消費者線程關聯的消息調度程序。

android.os.Handler
消費者線程消息處理器,以及生產者線程將消息插入隊列的接口。Looper可以有許多關聯的處理程序,但它們都將消息插入到同一隊列中。

android.os.MessageQueue
要在消費者線程上處理的無限鏈接消息列表。每個Looper和Thread-最多隻有一個MessageQueue。

android.os.Message
要在使用者線程上執行的消息。

原文鏈接:https://www.oreilly.com/library/view/efficient-android-threading/9781449364120/ch04.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章