我想在服务中运行多个线程。就像谷歌文档中的例子一样:
http://developer.android.com/guide/components/services.html
但是,因为您自己处理对onStartCommand()的每次调用, 您可以同时执行多个请求。那不是这个 例如,但如果这是你想要的,那么你可以创建一个新的 每个请求的线程并立即运行它们(而不是等待 以前的要求完成。)
如何同时执行多项请求?
例如,我想要启动的10个线程取决于Message.what。
如何以及在何处创建此10个帖子?在OnCreate
服务中?
但是OnCreate
只在我创建服务时执行一次。但是,如果我想为服务dynamically
添加线程,而generate message
依赖于intent extras
?例如:
Intent intent1 = new Intent(this, SimpleService.class);
intent1.putExtra("what", 1);
Intent intent2 = new Intent(this, SimpleService.class);
intent2.putExtra("what", 2);
...
startService(intent1);
startService(intent2);
...
我应该为每个线程创建10个处理程序和10个looper?
谢谢!
答案 0 :(得分:1)
如何同时执行多项请求?
使用a ThreadPoolExecutor
,为合理数量的线程配置(例如,核心数量的2倍,再加上1)。
如何以及在何处创建此10个帖子?在OnCreate服务中?
您可以在ThreadPoolExecutor
中设置onCreate()
,也可以在字段初始值设定项中设置。{/ p>
但是当我创建服务时,OnCreate只执行一次。
这就是您使用ThreadPoolExecutor
并为适当数量的线程配置它的原因。
但是,如果我想动态添加线程并生成消息取决于意图附加?
只需致电submit()
中的onStartCommand()
即可向ThreadPoolExecutor
添加一项工作。如果有可用的线程,工作将立即运行。如果没有,则为ThreadPoolExecutor
提供工作队列,并且您提交的工作将等待一个免费线程。