簡體   English   中英

在Android中實現多線程服務時需要幫助,該服務可以基於字符串在特定線程上排隊任務

[英]Need help in implementing a multithreaded service in Android which can queue tasks against a particular thread based on a string

因此,這使我陷入了種種麻煩。

我正在嘗試實現以下功能的Android服務:

  1. 並行處理傳入的意圖。
  2. 是多線程的,即具有多個工作線程。
  3. 可以基於通過意圖傳遞的字符串來選擇將意圖分配給哪個工作線程。 所以說,將字符串“ hello” get分配給名稱為“ helloThread”的線程。 如果未找到名稱為“ helloThread”的線程,則會為其創建一個線程。 在這之后,所有帶有線程“ hello”的新意圖只能由線程“ helloThread”處理。
  4. (可選)允許我隨時限制活動線程的最大數量,如果所有線程都忙,請允許我將待處理任務排隊,直到線程可以自由處理它們為止。

到目前為止,我已經嘗試了以下方法

  1. Hacked IntentService,使我可以為每個唯一字符串創建同一IntentService的多個實例。 那行得通,但是我失去了Android Framework提供的所有生命周期管理。 使用我自己的生命周期管理代碼被證明是徒勞的。
  2. ThreadPoolExecutors,如果我沒有上述第3點的要求,他們會為我工作,因為他們會根據可用性將傳入的意圖隨機分配給工作線程。

本質上,我需要實現多個並行任務處理隊列。

您可以使用Executors.newSingleThreadExecutor()獲取ExecutorService,該服務將僅使用一個工作線程執行任務,並將隊列用於其他任務(直到處理前一個任務)。 您可以使用Map<String, ExecutorService>然后為“ hello”字符串獲取已創建的ExecutorService。

暫無
暫無

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

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