我有一个IntentService
,我希望只有在startCommand
尚未投放时才会被调用。
原因是此服务正在处理数据库中的所有现有行。可以调用它多次启动但如果它已经运行它不应该再次启动。与没有要处理的行之后的IntentService
类似,它应该自行关闭。
这可以实现吗?也许使用PendingIntent
和FLAG_NO_CREATE
?
我可以使用Service
和单独的线程而不是IntentService
来创建它,但IntentService
已经实现了线程。
答案 0 :(得分:1)
可能使用PendingIntent和FLAG_NO_CREATE?
该标志是指创建PendingIntent
,而不是服务。
这可以实现吗?
脱下袖口:
第1步:在您的服务中,添加AtomicBoolean
字段(此处称为isRunning
),最初设置为false
。
步骤2:覆盖onStartCommand()
。如果isRunning
为false
,请将其设置为true
并链接到super.onStartCommand()
以继承正常的IntentService
行为。如果isRunning
为true
,请勿链接到super.onStartCommand()
。
步骤3:在onHandleIntent()
中,将您的所有工作包装在try
/ finally
块中,然后在isRunning
中将false
设置为finally
1}}。
网络:如果startService()
尚未运行,则IntentService
调用只会进行正常的onHandleIntent()
处理。