1

非常に奇妙なエラー...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
4

2 に答える 2

1

私はあなたが持っている例外はあなたのコードから、あるいはActivityクラスコードからさえも投げられないと思いますが、あるシステムレベルのライブラリで作成されているので、それを適切に処理する方法はありません。

ここで回避策を見つけます: Android-BroadcastReceiver unregisterReceiverの問題(登録されていません)

于 2013-03-24T12:16:33.327 に答える
1

ローカルブロードキャストを使用している場合は、これを試してください

 onPause(){
  LocalBroadcastManager.getInstance(this).unregisterReceiver(broadcastReceiver);
  }
于 2014-11-22T22:28:05.540 に答える