美文网首页
Android service 出现java.lang.Ille

Android service 出现java.lang.Ille

作者: pursuit_hu | 来源:发表于2019-05-23 15:19 被阅读0次

今天遇到一个令人很揪心的问题,开启service后,关闭service出现了这个错误:

java.lang.IllegalArgumentException: Service not registered:xxxxx.MyService

感觉很纳闷,因为我是这样写service的

public boolean startBindService(Context context) {

Intent serverIntent =new Intent(context, MyServerService.class);

    isServiceRegister =false;

    if (context !=null) {

isServiceRegister = context.bindService(serverIntent, mServiceConnection, Context.BIND_AUTO_CREATE);

    }

LogUtil.i(TAG, "startBindService: bind result = " +isServiceRegister);

    return isServiceRegister;

}

public boolean unBindService(Context context) {

f (context ==null ||myServerService ==null ||mServiceConnection ==null) {

return false;

}

if (!isServiceRegister) {

return false;

}

context.unbindService(mServiceConnection);

myServerService =null;

isServiceRegister =false;

}

这样不可能出现服务没有开启的问题,各个方面处理的也没毛病,但是就是不能关service。。。

最后发现了问题所在,原因是这样的:

开启service:startBindService(getApplicationContext())

关闭service:unBindService(this)     // this 是在activity中使用了。。。

相信一看就知道原因了,一个是getApplicationContext(),另一个却是activity.this,这样就会导致当前的service关闭的时候,一直说你的service没有注册,所以必须要统一开启和关闭的上下文变量。

相关文章

网友评论

      本文标题:Android service 出现java.lang.Ille

      本文链接:https://www.haomeiwen.com/subject/utxbzqtx.html