gpt4 book ai didi

android - 一项并发服务或多项服务

转载 作者:行者123 更新时间:2023-11-29 22:01:51 24 4
gpt4 key购买 nike

我正在开发一个实现 BroadcastReceiver 的应用程序来监听传入的 SMS。

例如,根据收到的短信,应用将:

  • 发送带有 SIM 卡信息的回复
  • 发送带有 IMEI 信息的回复
  • 发送包含当前 GPS 位置的回复
  • 等等

这应该如何实现?

我想到了两种方法,第一种是为每个功能提供一项服务,但我觉得这太过分了。另一方面,我想创建一个行为类似于 Controller 的服务,并为每个请求创建一个线程。

它需要并发,因为一些 Action 可能需要 1 秒,而另一个可能需要 1 或 2 分钟。

最佳答案

我建议创建一个并发的服务。您可以使用线程池并在作业到达时向其提交作业。这样您就不必担心长时间运行的作业会影响您的整个服务。

然而,这确实意味着您将不得不担心对各种不同服务的并发访问。如果每个服务一次只处理一个事务,那么为每种类型的请求创建一个服务可能会更容易。

如果您决定使用并发服务,那么以下代码是您如何使用 ExecutorService 线程池的示例。

// create a thread pool with a dynamic number of workers
ExecutorService threadPool = Executors.newCachedThreadPool();
while (!shutdown) {
// read your SMS job into an object
SmsMessage message = receiveSmsMessage();
threadPool.submit(new SmsJob(message));
}
// once we have submitted all jobs to the thread pool, it should be shutdown
threadPool.shutdown();
...
public class SmsJob implements Runnable {
private SmsMessage message;
public MyJobProcessor(SmsMessage message) {
this.message = message;
}
public void run() {
// process the message
}
}

关于android - 一项并发服务或多项服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11719008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com