-
Notifications
You must be signed in to change notification settings - Fork 1.9k
Receiver not registered PowerSaveModeBroadcastReceiver #6903
Description
Description
I am getting a rare crash in Xamarin.Forms.Platform.Android.FormsAppCompatActivity.OnPause bacuause the Power Save Mode Broadcast Receiver that is being removed is not registered.
Add defensive code when unregistering the power receiver just to make sure that the receiver is actually registered.
Steps to Reproduce
- Pause the app. (Very hard to reproduce as it happens rarely)
Expected Behavior
App pauses.
Actual Behavior
App crashes
Basic Information
- Version with issue: XF 3.6.0.344457
- Last known good version: None
- IDE: Visual Studio 2017
- Platform Target Frameworks:
- Android: 5.1.1
- Affected Devices: Samsung Active TAB 1
Stack trace
java.lang.IllegalArgumentException: Receiver not registered: md51558244f76c53b6aeda52c8a337f2c37.PowerSaveModeBroadcastReceiver@2c1a873a
android.app.LoadedApk.forgetReceiverDispatcher()LoadedApk.java:863
android.app.ContextImpl.unregisterReceiver()ContextImpl.java:2101
android.content.ContextWrapper.unregisterReceiver()ContextWrapper.java:529
md50adca6ceff4e9e85f78601686514349c.MainActivity.n_onPause(Native Method)
md50adca6ceff4e9e85f78601686514349c.MainActivity.onPause()MainActivity.java:54
android.app.Activity.performPause()Activity.java:6764
android.app.Instrumentation.callActivityOnPause()Instrumentation.java:1338
android.app.ActivityThread.performPauseActivity()ActivityThread.java:4393
android.app.ActivityThread.performPauseActivity()ActivityThread.java:4366
android.app.ActivityThread.handlePauseActivity()ActivityThread.java:4341
android.app.ActivityThread.access$1200()ActivityThread.java:218
android.app.ActivityThread$H.handleMessage()ActivityThread.java:1729
android.os.Handler.dispatchMessage()Handler.java:102
android.os.Looper.loop()Looper.java:145
android.app.ActivityThread.main()ActivityThread.java:6914
java.lang.reflect.Method.invoke(Native Method)
java.lang.reflect.Method.invoke()Method.java:372
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run()ZygoteInit.java:1404
com.android.internal.os.ZygoteInit.main()ZygoteInit.java:1199
Xamarin caused by: Java.Lang.IllegalArgumentException: Receiver not registered: md51558244f76c53b6aeda52c8a337f2c37.PowerSaveModeBroadcastReceiver@2c1a873a
Java.Interop.JniEnvironment.InstanceMethods.CallNonvirtualVoidMethod(JniObjectReference instance, JniObjectReference type, JniMethodInfo method, JniArgumentValue* args)<9cb01525c8ce48268eb7a54e1b653d67>:0
Java.Interop.JniPeerMembers.JniInstanceMethods.InvokeVirtualVoidMethod(string encodedMember, IJavaPeerable self, JniArgumentValue* parameters)<9cb01525c8ce48268eb7a54e1b653d67>:0
Android.Content.ContextWrapper.UnregisterReceiver(BroadcastReceiver receiver)<83e36ed05052486983583851de96589e>:0
Xamarin.Forms.Platform.Android.FormsAppCompatActivity.OnPause():0
CMS.Mobile.Droid.MainActivity.OnPause()<300088f2ef204a8b9c0414e96bfdc0d6>:0
Android.App.Activity.n_OnPause(IntPtr jnienv, IntPtr native__this)<83e36ed05052486983583851de96589e>:0
at (wrapper dynamic-method) System.Object.19(intptr,intptr)
--- End of managed Java.Lang.IllegalArgumentException stack trace ---
java.lang.IllegalArgumentException: Receiver not registered: md51558244f76c53b6aeda52c8a337f2c37.PowerSaveModeBroadcastReceiver@2c1a873a
android.app.LoadedApk.forgetReceiverDispatcher()LoadedApk.java:863
android.app.ContextImpl.unregisterReceiver()ContextImpl.java:2101
android.content.ContextWrapper.unregisterReceiver()ContextWrapper.java:529
md50adca6ceff4e9e85f78601686514349c.MainActivity.n_onPause(Native Method)
md50adca6ceff4e9e85f78601686514349c.MainActivity.onPause()MainActivity.java:54
android.app.Activity.performPause()Activity.java:6764
android.app.Instrumentation.callActivityOnPause()Instrumentation.java:1338
android.app.ActivityThread.performPauseActivity()ActivityThread.java:4393
android.app.ActivityThread.performPauseActivity()ActivityThread.java:4366
android.app.ActivityThread.handlePauseActivity()ActivityThread.java:4341
android.app.ActivityThread.access$1200()ActivityThread.java:218
android.app.ActivityThread$H.handleMessage()ActivityThread.java:1729
android.os.Handler.dispatchMessage()Handler.java:102
android.os.Looper.loop()Looper.java:145
android.app.ActivityThread.main()ActivityThread.java:6914
java.lang.reflect.Method.invoke(Native Method)
java.lang.reflect.Method.invoke()Method.java:372
com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run()ZygoteInit.java:1404
com.android.internal.os.ZygoteInit.main()ZygoteInit.java:1199