在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()时销毁服务,这表明我的服务类已正确实现。
答案 0 :(得分:0)
您需要从启动服务的位置缓存意图,然后使用相同的意图停止服务,它将起作用
例如,让我们说Intent i = new Intent(this,MyService.class);是你用来启动服务startService(i)的意图,使用相同的意图来阻止它。不要创造新的意图。
答案 1 :(得分:0)
事实证明,在通过调用stopService()销毁服务之前,我需要调用unbindService()。否则,服务不会被破坏。
以下代码适用于我的目的:停止服务并使用其他设备重启服务(这适用于蓝牙设备)。
ArrayListMultimap
我唯一不确定的是哪一个是一个好习惯:创建一个新的Intent来启动和停止服务或使用相同的Intent?它们似乎都有用。