如何在android中使用IntentService重启服务

时间:2012-10-05 11:06:50

标签: android broadcastreceiver intentservice

AlarmManager正在运行时,我可以通过从IntentService向广播接收器发送广播来停止我的ServiceA(它使用IntentService启动)。我希望在IntentService完成工作后再次启动相同的ServiceA。

前我有服务SrvA,IntentService IntSrvB和BroadcastReceiver MyBcr。当我的IntSrvB正在运行时,我能够停止SrvA。我的问题是如何在SrvA完成工作后再次重新启动IntSrvB

注意 - 使用ServA启动AlarmManager

1 个答案:

答案 0 :(得分:0)

编辑:根据您的代码,您可以传递变量myIntent& myIntent2IntentService - 您可以使用它们重新创建与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中使用一种方法来禁用&启用其功能 - 然后调用该方法而不是启动&停止服务。