我有什么选项来检查IntentService是否已在运行?

时间:2011-02-25 23:47:56

标签: android android-intent alarmmanager

我有一个每15分钟唤醒一次的AlarmService并触发一个IntentService。但是,我想确保如果以前启动的IS已经在运行,那么AlarmService不会尝试启动另一个(IS正在处理文件,如果第二个版本尝试了,则会出现奇怪的竞争条件对相同的文件采取行动)。

轮询系统以查看我的IS实例是否已在运行并跳过AlarmService cron的当前迭代的最佳方法是什么?

1 个答案:

答案 0 :(得分:8)

  

AlarmService不会尝试启动另一个(IS正在处理文件,如果第二个版本试图对同一文件采取行动,则会出现奇怪的竞争条件。)

没有竞争条件。首先,只有IntentService的一个实例。其次,IntentService一次只会在Intent处理一个onHandleIntent()

  

轮询系统以查看我的IS实例是否已在运行并跳过AlarmService cron的当前迭代的最佳方法是什么?

不要这样做。在IntentService中,跟踪您上次在数据成员中工作的时间。如果在onHandleIntent()中,该值为null,那么这是您在一段时间内的第一次传递,因此您可能希望继续进行工作。如果值不是null,请将其与当前时间进行比较,如果时间过早,则只需从onHandleIntent()返回。