IllegalArgumentException:服务未注册:

时间:2010-06-18 12:08:16

标签: android

我的应用中有多个活动,每个活动都会调用bindserviceunbindservice来获取数据。在第一个活动bindserviceunbindservice中工作正常。在第二个活动(重用相同的服务)中,绑定服务方法工作正常,但unbindservice方法给出异常:

IllegalArgumentException: Service not registered:

请帮忙。

4 个答案:

答案 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()之前被调用时会出现此错误

enter image description here

一个常见的例子

是当我们在Activity的onCreate()中的bindService和onPause()onStop()中的unbindService时。

如何避免?

情况1::仅当可见活动时,您只想与服务进行交互时,请遵循以下顺序。

  onStart()中的

bindService()和onStop()中的unbindService()

案例2:当您想与服务进行交互时,即使“活动”处于“后台”状态,

  

onCreate()中的bindService()和onDestroy()中的unbindService()