在onActivityResult()中调用stopService无效

时间:2015-09-30 02:49:23

标签: android service

在onActivityResult中,我想停止并重新启动该服务。但现在我甚至无法使用下面的代码停止服务。

if (requestCode == DEVICE_SELECTION)
{
        if(resultCode == RESULT_OK)
        {
            Intent i = new Intent(this, MyService.class);
            stopService(i);
        }
}

在调试模式下,它能够到达stopService()行,但应用程序从不调用MyService类的onDestroy()(扩展Service类),并且服务不会被销毁。

有谁知道为什么会这样?

我的服务可以正常启动,我可以在Activity的onDestroy()方法中调用stopService()时销毁服务,这表明我的服务类已正确实现。

2 个答案:

答案 0 :(得分:0)

您需要从启动服务的位置缓存意图,然后使用相同的意图停止服务,它将起作用

例如,让我们说Intent i = new Intent(this,MyService.class);是你用来启动服务startService(i)的意图,使用相同的意图来阻止它。不要创造新的意图。

答案 1 :(得分:0)

事实证明,在通过调用stopService()销毁服务之前,我需要调用unbindService()。否则,服务不会被破坏。

以下代码适用于我的目的:停止服务并使用其他设备重启服务(这适用于蓝牙设备)。

ArrayListMultimap

我唯一不确定的是哪一个是一个好习惯:创建一个新的Intent来启动和停止服务或使用相同的Intent?它们似乎都有用。