在意图服务中启动mutliple线程



理论上我想做的事情听起来很简单 - 我需要扫描设备中存在的所有mp3文件,并通过查询Acoustid或GraceNote之类的内容来执行一些元数据更新。p>我计划通过扩展IntentService使用类,在onHandleIntent()中,我计划创建n个线程,每个线程更新单个文件的元数据。我使用IntentService S的主要原因是我不需要与UI线程进行通信,并且手头的任务相对耗时。

我的主要问题是:IntentService会支持自定义线程吗?如果没有,我最好的选择是什么?我知道我不应该使用AsyncTask s,因为它们仅用于相对较小的计算。

预先感谢!

no, IntentService仅具有单个工作线程,依次处理传入意图。如果您想做更复杂的事情,则应扩展Service

产卵n线程听起来从来都不是一个好主意,尤其是当您的任务列表未绑定时(谁知道您有多少mp3曲目)

您可以使用的便利之一是Android的ThreadPool,它将为您提供并行的水平,但也将有一些理智的边界

请注意,Asynctask并不是要用于需要运行几分钟或几个小时的SMTH,但是一个或两个HTTP查询可以完全在建议的"几秒钟"时间范围内完成。

最重要的是,您描述的所有操作都是I/O,并且如果您可以访问异步I/O API,则根本不需要额外的线程,您的所有线程都将在等待网络或文件系统访问,如此浪费。如果您能够负担得起(和学习)Asynchronousfilechannel和Asynchttpclient,则可以在您的应用程序的质量和可扩展性方面

在质量和可扩展性方面产生很大的影响

最新更新