当AlarmManager
正在运行时,我可以通过从IntentService
向广播接收器发送广播来停止我的ServiceA(它使用IntentService
启动)。我希望在IntentService
完成工作后再次启动相同的ServiceA。
前我有服务SrvA
,IntentService IntSrvB
和BroadcastReceiver MyBcr
。当我的IntSrvB
正在运行时,我能够停止SrvA
。我的问题是如何在SrvA
完成工作后再次重新启动IntSrvB
。
注意 - 使用ServA
启动AlarmManager
。
答案 0 :(得分:0)
编辑:根据您的代码,您可以传递变量myIntent
& myIntent2
类IntentService
- 您可以使用它们重新创建与AlarmManager
一起使用的待处理意图的精确副本。
请注意,您似乎为每个“NOW”重复一次的意图设置了一个警报,之后每隔一段时间重复一次。然后,您再次隐式启动服务,即“现在”启动服务两次。这看起来像是一个错误 - 请查看AlarmManager.setRepeating()方法的文档。
以下原始答案......
将其放入IntentService
:
@Override
protected void onHandleIntent(Intent intent)
{
try
{
// STOP SERVICE
// DO YOUR WORK HERE
}
finally
{
// START SERVICE
}
}
您已拥有停止服务的代码。您可以从BroadcastReceiver
获取“启动服务”代码并将其放在finally块中。
我不建议在Android上覆盖onDestroy()
。
注意:我认为这不是设计应用的最佳方式,但我正在回答您的问题。就个人而言,我会在我的主要Service
中使用一种方法来禁用&启用其功能 - 然后调用该方法而不是启动&停止服务。