From 13695adf07a7f2544801b23fab66f4008bef796e Mon Sep 17 00:00:00 2001 From: Zaiyue Xue Date: Wed, 6 Sep 2023 12:24:33 +0800 Subject: [PATCH] Recheck the scedule job when the device is full charged and add more logs Bug: 298539147 Fix: 298539147 Test: manual Change-Id: Id9fdba17b24cbc6558bc29576f8cd93782854ee4 --- .../batteryusage/BatteryUsageBroadcastReceiver.java | 1 + .../fuelgauge/batteryusage/PeriodicJobManager.java | 6 ++++-- .../fuelgauge/batteryusage/PeriodicJobReceiver.java | 11 +++++++++++ 3 files changed, 16 insertions(+), 2 deletions(-) diff --git a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBroadcastReceiver.java b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBroadcastReceiver.java index ed5f182fd90..952b83f440f 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBroadcastReceiver.java +++ b/src/com/android/settings/fuelgauge/batteryusage/BatteryUsageBroadcastReceiver.java @@ -120,6 +120,7 @@ public final class BatteryUsageBroadcastReceiver extends BroadcastReceiver { mFetchBatteryUsageData = true; BatteryUsageDataLoader.enqueueWork(context, /*isFullChargeStart=*/ true); + BootBroadcastReceiver.invokeJobRecheck(context); } private void sendBatteryEventData(Context context, BatteryEventType batteryEventType) { diff --git a/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobManager.java b/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobManager.java index 8c0e66c78d8..43cd69dc942 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobManager.java +++ b/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobManager.java @@ -68,6 +68,8 @@ public final class PeriodicJobManager { /** Schedules the next alarm job if it is available. */ public void refreshJob(final boolean fromBoot) { if (mAlarmManager == null) { + BatteryUsageLogUtils.writeLog(mContext, Action.SCHEDULE_JOB, + "cannot schedule next alarm job due to AlarmManager is null"); Log.e(TAG, "cannot schedule next alarm job"); return; } @@ -80,8 +82,8 @@ public final class PeriodicJobManager { AlarmManager.RTC_WAKEUP, triggerAtMillis, pendingIntent); final String utcToLocalTime = ConvertUtils.utcToLocalTimeForLogging(triggerAtMillis); - BatteryUsageLogUtils.writeLog( - mContext, Action.SCHEDULE_JOB, "triggerTime=" + utcToLocalTime); + BatteryUsageLogUtils.writeLog(mContext, Action.SCHEDULE_JOB, + String.format("triggerTime=%s, fromBoot=%b", utcToLocalTime, fromBoot)); Log.d(TAG, "schedule next alarm job at " + utcToLocalTime); } diff --git a/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobReceiver.java b/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobReceiver.java index 2371a19f85c..dccca43e680 100644 --- a/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobReceiver.java +++ b/src/com/android/settings/fuelgauge/batteryusage/PeriodicJobReceiver.java @@ -33,12 +33,23 @@ public final class PeriodicJobReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { + try { + loadDataAndRefreshJob(context, intent); + } catch (Exception e) { + BatteryUsageLogUtils.writeLog(context, Action.SCHEDULE_JOB, + String.format("loadDataAndRefreshJob() failed: %s", e)); + } + } + + private static void loadDataAndRefreshJob(Context context, Intent intent) { final String action = intent == null ? "" : intent.getAction(); if (!ACTION_PERIODIC_JOB_UPDATE.equals(action)) { Log.w(TAG, "receive unexpected action=" + action); return; } if (DatabaseUtils.isWorkProfile(context)) { + BatteryUsageLogUtils.writeLog(context, Action.SCHEDULE_JOB, + "do not refresh job for work profile"); Log.w(TAG, "do not refresh job for work profile action=" + action); return; }