ChargingControl: Prevent crash against very frequent power toggle
Log:
12-04 00:04:42.661 1499 1499 E AndroidRuntime: *** FATAL EXCEPTION IN SYSTEM PROCESS: main
12-04 00:04:42.661 1499 1499 E AndroidRuntime: java.lang.RuntimeException: Error receiving broadcast Intent { act=android.intent.action.ACTION_POWER_DISCONNECTED flg=0x4000010 (has extras) } in org.lineageos.platform.internal.health.ChargingControlController$2@7432f8e
12-04 00:04:42.661 1499 1499 E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0(LoadedApk.java:1822)
12-04 00:04:42.661 1499 1499 E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args.$r8$lambda$mcNAAl1SQ4MyJPyDg8TJ2x2h0Rk(Unknown Source:0)
12-04 00:04:42.661 1499 1499 E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args$$ExternalSyntheticLambda0.run(D8$$SyntheticClass:0)
12-04 00:04:42.661 1499 1499 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:959)
12-04 00:04:42.661 1499 1499 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:100)
12-04 00:04:42.661 1499 1499 E AndroidRuntime: at android.os.Looper.loopOnce(Looper.java:232)
12-04 00:04:42.661 1499 1499 E AndroidRuntime: at android.os.Looper.loop(Looper.java:317)
12-04 00:04:42.661 1499 1499 E AndroidRuntime: at com.android.server.SystemServer.run(SystemServer.java:985)
12-04 00:04:42.661 1499 1499 E AndroidRuntime: at com.android.server.SystemServer.main(SystemServer.java:669)
12-04 00:04:42.661 1499 1499 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method)
12-04 00:04:42.661 1499 1499 E AndroidRuntime: at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:583)
12-04 00:04:42.661 1499 1499 E AndroidRuntime: at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:864)
12-04 00:04:42.661 1499 1499 E AndroidRuntime: Caused by: java.lang.IllegalArgumentException: Receiver not registered: org.lineageos.platform.internal.health.ChargingControlController$LineageHealthBatteryBroadcastReceiver@7c6b69a
12-04 00:04:42.661 1499 1499 E AndroidRuntime: at android.app.LoadedApk.forgetReceiverDispatcher(LoadedApk.java:1674)
12-04 00:04:42.661 1499 1499 E AndroidRuntime: at android.app.ContextImpl.unregisterReceiver(ContextImpl.java:1901)
12-04 00:04:42.661 1499 1499 E AndroidRuntime: at org.lineageos.platform.internal.health.ChargingControlController.onPowerDisconnected(ChargingControlController.java:325)
12-04 00:04:42.661 1499 1499 E AndroidRuntime: at org.lineageos.platform.internal.health.ChargingControlController.onPowerStatus(ChargingControlController.java:336)
12-04 00:04:42.661 1499 1499 E AndroidRuntime: at org.lineageos.platform.internal.health.ChargingControlController.-$$Nest$monPowerStatus(Unknown Source:0)
12-04 00:04:42.661 1499 1499 E AndroidRuntime: at org.lineageos.platform.internal.health.ChargingControlController$2.onReceive(ChargingControlController.java:290)
12-04 00:04:42.661 1499 1499 E AndroidRuntime: at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0(LoadedApk.java:1814)
12-04 00:04:42.661 1499 1499 E AndroidRuntime: ... 11 more
Change-Id: Ic2c1df60881ea06bd2cd3f6b68ea3ff7c1273153
This commit is contained in:
committed by
Michael Bestas
parent
38be42ce0a
commit
6881d5f44e
@@ -288,6 +288,8 @@ public class ChargingControlController extends LineageHealthFeature {
|
||||
private void onPowerConnected() {
|
||||
if (mBattReceiver == null) {
|
||||
mBattReceiver = new LineageHealthBatteryBroadcastReceiver();
|
||||
} else {
|
||||
mContext.unregisterReceiver(mBattReceiver);
|
||||
}
|
||||
IntentFilter battFilter = new IntentFilter(Intent.ACTION_BATTERY_CHANGED);
|
||||
mContext.registerReceiver(mBattReceiver, battFilter);
|
||||
@@ -296,6 +298,7 @@ public class ChargingControlController extends LineageHealthFeature {
|
||||
private void onPowerDisconnected() {
|
||||
if (mBattReceiver != null) {
|
||||
mContext.unregisterReceiver(mBattReceiver);
|
||||
mBattReceiver = null;
|
||||
}
|
||||
|
||||
// On disconnected, reset internal state
|
||||
|
||||
Reference in New Issue
Block a user