簡體   English   中英

如何在Android中創建兩個合作但無阻塞的服務?

[英]How to create two cooperating but non-blocking services in Android?

我對Android服務的運行位置感到困惑。 我知道標記為“遠程”的服務在它們自己的進程中運行,但是普通的本地服務又如何呢?

我問的原因是我希望兩個本地服務機構合作,但又不要互相阻礙。 因此,例如,Service1管理網絡連接並接收數據包。 收到數據包后,我需要該服務將數據包移交給Service2,該Service2處理信息並采取某些措施,包括可能發送返回消息。 我需要異步進行接收,移交和處理,因此網絡服務可以在應用程序服務處理數據包的同時繼續接收數據包。 我如何確保這種情況發生?

我知道一種解決方案是廣播Intent,但是如何在Intent中包含自定義數據對象(即數據包)? 我不想實現可分割的接口(對本地服務的過度殺傷),但我確實需要能夠在服務之間傳遞復雜的數據對象。

謝謝

清單文件中定義為在同一進程中運行的所有內容也共享同一主線程。 如果該進程中正在運行活動,則該線程有時也就是UI線程。 因此,如果您有兩個本地服務,並且它們在同一進程中運行,它們將共享相同的主執行線程。 為了使它們都能“同時”工作(直到存在多核android設備,所有執行都是順序執行的),處理網絡連接的服務將需要在單獨的線程中進行。 您的其他服務也將需要另一個線程。

您的問題通常稱為生產者-消費者模式。 這是使用阻塞隊列的簡單實現的快速鏈接示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM