我的应用中有多个活动,每个活动都会调用bindservice
和unbindservice
来获取数据。在第一个活动bindservice
和unbindservice
中工作正常。在第二个活动(重用相同的服务)中,绑定服务方法工作正常,但unbindservice
方法给出异常:
IllegalArgumentException: Service not registered:
请帮忙。
答案 0 :(得分:10)
NikkyD的问题非常好,在我的案例中帮助找到了这个例外的原因。对于遇到相同问题的任何人,请确保对相同的上下文完成bindService调用和unbindService调用。希望它有所帮助。
答案 1 :(得分:5)
多个客户端可以立即连接到该服务。但是,只有在第一个客户端绑定时,系统才会调用服务的onBind()方法来检索IBinder。然后,系统将相同的IBinder传递给任何其他绑定的客户端,而无需再次调用onBind()。 http://developer.android.com/guide/components/bound-services.html 多个组件可以立即绑定到服务,但是当所有组件解除绑定时,服务将被销毁。 所以,请检查您是否第一次杀死了该服务。 可能会更好地通过IBind到每个活动。因为它只返回一个。
答案 2 :(得分:0)
我遇到了旧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上没有问题。
答案 3 :(得分:0)
有时,在活动unbindService()
中,在bindService()
之前被调用时会出现此错误
是当我们在Activity的onCreate()
中的bindService和onPause()
或onStop()
中的unbindService时。
情况1::仅当可见活动时,您只想与服务进行交互时,请遵循以下顺序。
onStart()
中的bindService()和
onStop()
中的unbindService()
案例2:当您想与服务进行交互时,即使“活动”处于“后台”状态,
onCreate()
中的bindService()和onDestroy()
中的unbindService()