首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >奇怪的“接收器未注册”异常

奇怪的“接收器未注册”异常
EN

Stack Overflow用户
提问于 2011-02-12 20:56:34
回答 4查看 20.9K关注 0票数 26

在onResume()中,我这样做:

registerReceiver(timeTickReceiver, new IntentFilter(Intent.ACTION_TIME_TICK));

在onPause()中:

unregisterReceiver(timeTickReceiver);

我在安卓开发者控制台看到"java.lang.IllegalArgumentException: Receiver not registered“报告(只有2个报告,而我的应用有成千上万的用户)。异常由unregisterReceiver()触发。可能会发生什么?我不是很有信心仅仅用try-catch来围绕它。

EN

回答 4

Stack Overflow用户

发布于 2013-06-01 18:15:27

广播接收器应在onPause()生命周期方法中取消注册

protected void onPause() {
    this.unregisterReceiver(reciever);
    super.onPause();
}
票数 6
EN

Stack Overflow用户

发布于 2011-06-23 15:43:48

我猜可能在某些状态下,接收器在用户退出应用程序之前并未实际注册。

在运行unregister之前,您可能希望尝试为接收器添加检查(我在几种情况下都这样做过):

protected void onPause() {
  if(timeTickReceiver != null) {
    unregisterReceiver(timeTickReceiver);
  }
}
票数 2
EN

Stack Overflow用户

发布于 2014-12-19 21:50:32

最简单的选择是将try/catch块包装在代码周围。

try{
    ...
    this.unregisterReceiver(reciever);
   }
    catch(IllegalArgumentException e)
    {
        // TODO: handle exception
    }
    catch (Exception e) {
        // TODO: handle exception
    }
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4978167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档