向IntentService询问有关其队列的信息

And*_*rew 9 android intentservice android-intentservice

我有一个IntentService,它将需要对我的Web服务器进行的Web服务调用进行排队.因此,每个Intent都是要进行的Web服务调用.

我想设置一些东西,我的应用程序可以询问这个IntentService,如果它有任何含有特定数据的Intent(IE:"你是否已经在等待向云询问x数据?或者我是否需要告诉你做到了吗?").

关于如何扩展IntentService来做这个有什么建议吗?是否可以遍历IntentService的Intent队列?或者我需要获取IntentService代码并进行更改吗?

我唯一的另一个想法是向数据库添加一个表并记录哪些调用在队列中,每个日志在完成后从表中删除.

Com*_*are 21

关于如何扩展IntentService来做这个有什么建议吗?是否可以遍历IntentService的Intent队列?或者我需要获取IntentService代码并进行更改吗?

可能是后者,如果你真的想检查实际的队列.IntentService接通Intents到弹出上的消息队列中的消息Looper经由HandlerThread.但是,这些都不是通过SDK公开的.幸运的是,IntentService相当短 - 甚至不到150行.您可以将其克隆到您自己的包中,并根据需要进行修改.当在AOSP存储库中发布新的源更新时,只需在源上运行差异,因此您知道Google是否对您自己执行了任何IntentService您可能想要利用的大手术.

我唯一的另一个想法是向数据库添加一个表并记录哪些调用在队列中,每个日志在完成后从表中删除.

它甚至不需要像那样持久化,因为它IntentService自己的队列不是持久的.只需维护自己的FIFO队列onStartCommand(),链接到超类,然后Intent在结束时弹出队列onHandleIntent().这有可能与主队列不同步(例如,您将要使用finally以确保从自己的队列中弹出工作),但您不必克隆该类.