java.lang.IllegalArgumentException: Receiver not registered
来源:互联网 发布:生命公式软件 编辑:程序博客网 时间:2024/06/06 02:35
错误提示:java.lang.IllegalArgumentException: Receiver not registered。。
顾名思义就是Receiver没有被注册,这是由于取消了没有注册的Receiver导致的错误。
我们使用Receiver时必须保证注册(register)和反注册(unregister)成对出现。
遇到这种问题时,你需要检查下自己代码中注册和反注册的代码,看下是否存在多次调用unregister的时候。
很多时候都是想当然认为会那样,但是程序中可能有我们未预料的出口,比如我的程序中在onCreate注册,finish取消注册,理论进入、退出时应该成对出现,但实际报错了!分析到最后是原布局中使用了TabActivity、GroupActivity等多种结构嵌套,退出当前Activity时,finish方法被执行了多次。
所以建议Receiver注册和反注册的过程放到onResume和onPause过程中,两个理由:
(1)这两个过程肯定会成对出现,因此可以避免上述错误。
(2)一般我们使用Receiver是为了接受通知来更改UI(特殊情况除外),而对于Activity(UI)界面位于后台时,没必要去接受通知更改UI。
示例:
在 Adroid2.1 和 Adroid2.2 设备上,如果 Activity 中使用到 ViewFlipper 控件,进行横竖屏切换操作时会发生如下错误信息
java.lang.IllegalArgumentException: Receiver not registered: android.widget.ViewFlipper$1@43dee3c0
这是由于 onDetachedFromWindow() 莫名其妙地在 onAttachedToWindow() 之前被调用了。据说是一个 Bug ,不知在最新的 2.3 上是否修正。
下面提供一个很简单的解决方案,重写 ViewFlipper 的 onDetachedFromWindow() 方法
@Override
protected void onDetachedFromWindow () {
try {
super.onDetachedFromWindow();
}
catch (IllegalArgumentException e) {
stopFlipping();
}
java.lang.IllegalArgumentException: Receiver not registered: android.widget.ViewFlipper$1@43dee3c0
这是由于 onDetachedFromWindow() 莫名其妙地在 onAttachedToWindow() 之前被调用了。据说是一个 Bug ,不知在最新的 2.3 上是否修正。
下面提供一个很简单的解决方案,重写 ViewFlipper 的 onDetachedFromWindow() 方法
@Override
protected void onDetachedFromWindow () {
try {
super.onDetachedFromWindow();
}
catch (IllegalArgumentException e) {
stopFlipping();
}
}
0 0
- java.lang.IllegalArgumentException: Receiver not registered
- java.lang.IllegalArgumentException: Receiver not registered: null
- java.lang.IllegalArgumentException: Receiver not registered: null
- Android java.lang.IllegalArgumentException: Receiver not registered
- java.lang.IllegalArgumentException: Receiver not registered
- Caused by: java.lang.IllegalArgumentException:Receiver not registered: 解决办法
- java.lang.IllegalArgumentException: Receiver not registered: android.widget.ZoomButtonsController$1@
- java.lang.IllegalArgumentException: Receiver not registered: android.widget.ZoomButtonsController
- 关闭WebView时报 java.lang.IllegalArgumentException: Receiver not registered:
- IllegalArgumentException: Receiver not registered
- Android广播接收器注册问题:Caused by: java.lang.IllegalArgumentException: Receiver not registered
- Caused by: java.lang.IllegalArgumentException: Receiver not registered: android.widget.ViewFlipper
- java.lang.IllegalArgumentException: Service not registered
- 错误:java.lang.IllegalArgumentException: Service not registered
- [Android]Caused by: java.lang.IllegalArgumentException: Service not registered.md
- IllegalArgumentException: Receiver not registered: com.example.administrator.mediarecoder.ReListActi
- Android 解决IllegalArgumentException: Receiver not registered: android.widget.ZoomButtonsController
- java.lang.IllegalArgumentException: Service not registered: com.ysy.mythreaddemo.MainActivity$MyConn
- Oracle 约束
- MyEclipse快捷键
- 深入理解JVM读书笔记一: Java内存区域与内存溢出异常
- 企业级三大hadoop-Cloudera、Hortonworks和MapR
- Python数据处理手册
- java.lang.IllegalArgumentException: Receiver not registered
- SpringMVC-3 模型数据到视图
- BZOJ2798/POI 2012 Bidding
- Thread和Runable的区别、Synchronized锁关键字
- 归并排序算法?
- 快排算法
- Linux的文件种类
- 机器学习基础
- 沙场9