最多运行一次IntentService

时间:2017-02-10 23:00:15

标签: android android-intent android-pendingintent

我有一个IntentService,我希望只有在startCommand尚未投放时才会被调用。

原因是此服务正在处理数据库中的所有现有行。可以调用它多次启动但如果它已经运行它不应该再次启动。与没有要处理的行之后的IntentService类似,它应该自行关闭。

这可以实现吗?也许使用PendingIntentFLAG_NO_CREATE

我可以使用Service和单独的线程而不是IntentService来创建它,但IntentService已经实现了线程。

1 个答案:

答案 0 :(得分:1)

  

可能使用PendingIntent和FLAG_NO_CREATE?

该标志是指创建PendingIntent,而不是服务。

  

这可以实现吗?

脱下袖口:

第1步:在您的服务中,添加AtomicBoolean字段(此处称为isRunning),最初设置为false

步骤2:覆盖onStartCommand()。如果isRunningfalse,请将其设置为true并链接到super.onStartCommand()以继承正常的IntentService行为。如果isRunningtrue,请勿链接到super.onStartCommand()

步骤3:在onHandleIntent()中,将您的所有工作包装在try / finally块中,然后在isRunning中将false设置为finally 1}}。

网络:如果startService()尚未运行,则IntentService调用只会进行正常的onHandleIntent()处理。