在做Service的绑定和解绑小项目测试的时候,绑定成功,解绑也成功,但是如果解除绑定后再点击给解除绑定的指令(项目中就是点击按钮解除绑定),会报这个错误:

AndroidRuntime(7090): java.lang.IllegalArgumentException: Service not registered:
com.m1910.servicetest.MainActivity$1@41ddfcc0

错误提示Service没有注册,事实上我在Manifest.xml中已经注册过这个Service了。
修改前代码:

  1.     @Override
  2.     public void onClick(View v) {
  3.      switch (v.getId()) {
  4.       case R.id.start_service:
  5.           Intent startIntent = new Intent(this, MyService.class);
  6.           startService(startIntent);// 启动服务
  7.          break;
  8.         case R.id.stop_service:
  9.            Intent stopIntent = new Intent(this, MyService.class);
  10.            stopService(stopIntent);// 停止服务
  11.            break;
  12.         case R.id.bind_service:
  13.            Intent bindIntent = new Intent(this, MyService.class);
  14.                         // 绑定服务
  15.           bindService(bindIntent, connection, BIND_AUTO_CREATE);
  16.             break;
  17.         case R.id.unbind_service:
  18.          unbindService(connection);// 解绑服务   
  19.           break;
  20.         default:
  21.           break;
  22.         }
  23.  }

查询官方文档中关于unbindService()这个方法的介绍:

public abstract void unbindService (ServiceConnection conn)Added in API level 1
Disconnect from an application service. You will no longer receive calls as the service is restarted, and the service is now allowed to stop at any time.Parameters
conn    The connection interface previously supplied to bindService(). This parameter must not be null.

最后一句看到这个传入的conn参数不能为null,也就是必须有绑定存在,才能解绑,小项目中绑定成功后第一次点击解绑不会报错,解绑后这个参数就是null了,再次点击解绑就会报错,那么我们为解绑加一个判断就可以了。
修改后代码如下:

  1. private boolean isBound = false;
  2.  
  3.   @Override
  4.     public void onClick(View v) {
  5.      switch (v.getId()) {
  6.       case R.id.start_service:
  7.           Intent startIntent = new Intent(this, MyService.class);
  8.           startService(startIntent);// 启动服务
  9.          break;
  10.         case R.id.stop_service:
  11.            Intent stopIntent = new Intent(this, MyService.class);
  12.            stopService(stopIntent);// 停止服务
  13.            break;
  14.         case R.id.bind_service:
  15.            Intent bindIntent = new Intent(this, MyService.class);
  16.                         // 绑定服务
  17.           isBound = bindService(bindIntent, connection, BIND_AUTO_CREATE);
  18.          break;
  19.         case R.id.unbind_service:
  20.          if (isBound) {
  21.                 unbindService(connection);// 解绑服务
  22.              isBound = false;
  23.          }
  24.          break;
  25.         default:
  26.           break;
  27.         }
  28.  }

网上也有人用getApplicationContext().unbindService(mConnection);这样来做,什么意思我也不太懂,不过最终效果一样也是要加一个是否为空的判断。

错误:java.lang.IllegalArgumentException: Service not registered相关推荐

  1. java.lang.IllegalArgumentException: Receiver not registered

    错误提示:java.lang.IllegalArgumentException: Receiver not registered. 顾名思义就是Receiver没有被注册,这是由于取消了没有注册的Re ...

  2. java参数错误,参数不匹配错误java.lang.IllegalArgumentException: argument type mismatch

    当前位置:我的异常网» Java Web开发 » 参数不匹配错误java.lang.IllegalArgumentException 参数不匹配错误java.lang.IllegalArgumentE ...

  3. springmvc错误java.lang.IllegalArgumentException

    昨天把我的代码提交到服务器上的时候一直是错误,但是在自己的电脑上跑一直没有问题,于是请教了好多人,他们说可能是配置的文件的问题,但是最后也没有弄出来. 最后我查看了服务器上的jdk和tomact和我本 ...

  4. 信息: 解析 HTTP 请求 header 错误 java.lang.IllegalArgumentException: 在方法名称中发现无效的字符串, HTTP 方法名必须是有效的符号.

    信息: 解析 HTTP 请求 header 错误 Note: further occurrences of HTTP request parsing errors will be logged at ...

  5. java.lang.IllegalArgumentException: Invalid token /storage/emulated/0/Download/s-kz-02.jpg

    一.前言 在Android12版本上面使用MediaStore时候有时候会遇到以下错误: java.lang.IllegalArgumentException: Invalid token /stor ...

  6. java.lang.IllegalArgumentException: requirement failed: No output operations registered, so nothing

    java.lang.IllegalArgumentException: requirement failed: No output operations registered, so nothing ...

  7. Error querying database. Cause: java.lang.IllegalArgumentException:Failed to decrypt. 错误解决方案

    java.lang.IllegalArgumentException:Failed to decrypt 从错误可以看出,解密失败. 原因是你在数据库连接配置的地方,设置了加密.即: config.d ...

  8. 【Java】Kryo运行报错:Exception in thread “main“ java.lang.IllegalArgumentException:Class is not registered

    练习代码如下: import com.esotericsoftware.kryo.Kryo; import com.esotericsoftware.kryo.io.Input; import com ...

  9. java苹果沙盒验证参数问题_php – iOS7 – 收据未在沙盒验证 – 错误21002(java.lang.IllegalArgumentException)...

    我正在将应用程式从iOS6转换为iOS7.在我使用不建议使用的transactionReceipt方法之前,我正在尝试推荐的方法来检索收据,然后在64位编码: NSData *working = [N ...

  10. activiti 解压zip java.lang.IllegalArgumentException: MALFORMED 错误

    工作流导入 @Overridepublic int create(MultipartFile file, String name, String category) {try{if (file != ...

最新文章

  1. 数据在java中加时间,如何在Or.jFr.DATA时间中设置RealTimeMead时期的Java数据
  2. Spring aop面向切面编程概述
  3. matlab raw函数,用matlab处理Raw格式的图像文件的方法
  4. python 验证码识别训练_Python爬虫笔记【一】模拟用户访问之Tesseract-ocr验证码训练(5)...
  5. java三年,Java开发三年,你不得不了解的JVM(一)
  6. mycncart操作使用教程 - 商品分类
  7. 推荐系统--矩阵分解(5)
  8. Educational Codeforces Round 25 E. Minimal Labelshdu1258
  9. calibration trl 设计_校准:怎样设计和验证TRL校准件以及TRL校准的具体过程
  10. 学会java基础能找工作吗?
  11. 计算机应用基础win7.pdf,计算机应用基础WIn7操作题(12页)-原创力文档
  12. 一些学习笔记和工作布置
  13. 一张图看懂你与AI的优劣势
  14. SCOM 2012系列⑪单台服务器性能图监控
  15. 在Magento 2中自定义电子邮件模板
  16. 51 单片机 程序编写
  17. 愚人节整蛊,网页倾斜代码
  18. 天基实业怎样投资理财收益稳定
  19. 学计算机文理不分,新高考文理不分科怎么上课 文理不分科还分班吗
  20. c 语言编译程序的首要工作,2017年计算机基础试题选择题「附答案」

热门文章

  1. 嵌入式学习(三)—— STM32入门
  2. 理论综述与创新---结构洞的新应用
  3. W801单片机学习笔记——内部结构,总线架构篇
  4. matlab里面的取整函数
  5. B站视频、音频分开传输
  6. 四种利用ANSYS-SCDM抽取内部流场方法
  7. c语言爬楼梯不用递归,[leetcode]爬楼梯的递归和非递归方法
  8. Bicubic介绍及Python实现
  9. html在下划线上加文本框,在word文本框中如何添加下划线
  10. Android 最常用的设计模式八 安卓源码分析—工厂方法模式factory