今天在使用service的时候在onDestroy(); 里面进行unbindService(mServiceConnection); 操作,程序直接报了java.lang.IllegalArgumentException: Service not registered的错误。
错误流程如下,开始在xml文件里面定义了两个button
两个button 一个用来打开service 一个用来关闭service
一个按钮是用来bindservice 一个按钮是用来 unbindservice
如果点击顺序 1.bindService ---> 2.unbindService 则不会有任何问题, 但是如果顺序是 1.unbindService 或者 1.bindService -----> 2.unbindService -----> 3.unbindService . 则会出现java.lang.IllegalArgumentException: Service not registered的错误。
后来发现 原来 bindservice() 这个方法竟然还有返回值,并且是boolean的。所以在unbindService的时候 需要进行非空判断,但是这个判断使用这个boolean来判断 ,所以就修改如下:
首先定义一个值,来判断service是否为空 也是unbindService的判断条件
用定义的值来判断,则可以解决以上问题,但是要记得解绑后恢复初始值