【问题标题】:IllegalArgumentException not catched未捕获 IllegalArgumentException
【发布时间】:2013-03-24 11:19:09
【问题描述】:

一个非常奇怪的错误...我在 onResume() 和 onPause() 方法中注册和取消注册接收器。下面是 onStop() 方法中的代码:

    try{
        this.unregisterReceiver(this.sdCardReceiver);
    }catch(IllegalArgumentException e){
        Log.d(MyOwnLife.LOG_LIFEGALLERY, "ActivityVideo - onStop unregisterReceiver:"+e);
    }

我收到以下错误:

Caused by: java.lang.IllegalArgumentException: Receiver not registered: myownlife.pigeau.activityVideo.ActivityVideo$SdCardReceiver@405443f8

我发现了错误……但我的应用程序还是崩溃了……有什么想法吗?

这是完整的日志:

    java.lang.RuntimeException: Unable to stop activity {myownlife.pigeau/myownlife.pigeau.activityVideo.ActivityVideo}: java.lang.IllegalArgumentException: Receiver not registered: myownlife.pigeau.activityVideo.ActivityVideo$SdCardReceiver@405443f8
at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:2434)
at android.app.ActivityThread.handleWindowVisibility(ActivityThread.java:2506)
at android.app.ActivityThread.access$1900(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:958)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.IllegalArgumentException: Receiver not registered: myownlife.pigeau.activityVideo.ActivityVideo$SdCardReceiver@405443f8
at android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:610)
at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:851)
at android.content.ContextWrapper.unregisterReceiver(ContextWrapper.java:342)
at myownlife.pigeau.activityVideo.ActivityVideo.onStop(ActivityVideo.java:224)
at android.app.Instrumentation.callActivityOnStop(Instrumentation.java:1170)
at android.app.Activity.performStop(Activity.java:3884)
at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:2431)
... 11 more

【问题讨论】:

  • 能否请您也添加 logcat 输出
  • 你为什么不使用你最喜欢的调试器来找出发生了什么?
  • 似乎您正在尝试做一些自定义的事情:[1]:stackoverflow.com/questions/8050730/…
  • 让我们看看完整的堆栈跟踪

标签: android


【解决方案1】:

我假设你得到的异常不是从你的代码中抛出的,甚至不是从 Activity 类代码中抛出的,而是在某个系统级库中创建的,所以没有办法正确处理它。

在这里您可以找到解决方法: Android - BroadcastReceiver unregisterReceiver issue (not registered)

【讨论】:

  • 这个解决方案会很好:)
【解决方案2】:

如果你使用的是本地广播,那么试试这个

 onPause(){
  LocalBroadcastManager.getInstance(this).unregisterReceiver(broadcastReceiver);
  }

【讨论】:

  • 我希望我能给 Avinash 一百万个赞!!!这个问题让我发疯了几个小时,这个简单的技巧完全解决了这个问题!!!
猜你喜欢
  • 1970-01-01
  • 2013-10-11
  • 1970-01-01
  • 2013-07-07
  • 1970-01-01
  • 1970-01-01
  • 2010-09-28
  • 2012-09-22
相关资源
最近更新 更多