我的应用中有多个活动,每个活动都调用bindservice
和unbindservice
来获取数据。在第一个活动中,bindservice
和unbindservice
工作正常。在第二个活动中(重复使用相同的服务),绑定服务方法可以正常工作,但是unbindservice
方法会抛出异常:
IllegalArgumentException: Service not registered:
请帮忙。
我的应用中有多个活动,每个活动都调用bindservice
和unbindservice
来获取数据。在第一个活动中,bindservice
和unbindservice
工作正常。在第二个活动中(重复使用相同的服务),绑定服务方法可以正常工作,但是unbindservice
方法会抛出异常:
IllegalArgumentException: Service not registered:
请帮忙。
NikkyD的问题非常好,它帮助我找到了这个异常的原因。对于那些遇到相同问题的人,请确保您的bindService调用和unbindService调用使用的是相同的上下文。希望能对你有所帮助。
有时当在一个Activity中调用unbindService()
之前调用了bindService()
时,就会出现这个错误。
是当我们在 Activity 的 onCreate()
中绑定服务,而在 onPause()
或 onStop()
中解除绑定时。
情况 1:当您只想在 Activity 可见时与服务交互时,请按照以下顺序进行。
在
onStart()
中绑定服务,并在onStop()
中解除绑定
情况 2:当您想要与服务交互,即使 Activity 在后台运行时也是如此。
在
onCreate()
中绑定服务,并在onDestroy()
中解除绑定
我曾经在旧版API(Android 2.2)中遇到过这个问题。 当我调用了这个方法时,我收到了以下错误信息:(来自计费教程)
@Override
public void onDestroy() {
super.onDestroy();
try {
if (mHelper != null) mHelper.dispose();
mHelper = null;
}catch (IllegalArgumentException e){
Log.d("TMA Billing Android 2.2","Error: "+e.getMessage());
mHelper = null;
}
}
正如你所看到的,我用Try Catch包围了它,现在在Android 2.2上可以毫无问题地工作。