Call detect anomaly in period job only when there is new battery usage data.

- Reduce the memory usage of call anomaly detection
 - Remove redundant condition for low battery banner

Bug: 300446490
Bug: 284893240
Fix: 300446490
Test: presubmit
Change-Id: I11c1b41a45e129bcec57b9d18c4affe0de7f1d38
Merged-In: I11c1b41a45e129bcec57b9d18c4affe0de7f1d38
This commit is contained in:
Zaiyue Xue
2023-09-19 15:05:08 +08:00
parent 821ed07099
commit 8371d08595
3 changed files with 14 additions and 17 deletions

View File

@@ -23,8 +23,6 @@ import com.android.settings.fuelgauge.batterytip.BatteryTipPolicy;
import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
import com.android.settings.fuelgauge.batterytip.tips.LowBatteryTip;
import java.util.concurrent.TimeUnit;
/**
* Detect whether the battery is too low
*/
@@ -46,9 +44,7 @@ public class LowBatteryDetector implements BatteryTipDetector {
@Override
public BatteryTip detect() {
final boolean lowBattery = mBatteryInfo.batteryLevel <= mWarningLevel
|| (mBatteryInfo.discharging && mBatteryInfo.remainingTimeUs != 0
&& mBatteryInfo.remainingTimeUs < TimeUnit.HOURS.toMicros(mPolicy.lowBatteryHour));
final boolean lowBattery = mBatteryInfo.batteryLevel <= mWarningLevel;
final boolean lowBatteryEnabled = mPolicy.lowBatteryEnabled && !mIsPowerSaveMode;
final boolean dischargingLowBatteryState =
mPolicy.testLowBatteryTip || (mBatteryInfo.discharging && lowBattery);

View File

@@ -116,8 +116,16 @@ public final class BatteryUsageDataLoader {
final Handler handler = new Handler(Looper.getMainLooper());
final BatteryLevelData batteryLevelData = DataProcessManager.getBatteryLevelData(
context, handler, /*isFromPeriodJob=*/ true,
batteryDiffDataMap -> DatabaseUtils.sendBatteryUsageSlotData(context,
ConvertUtils.convertToBatteryUsageSlotList(batteryDiffDataMap)));
batteryDiffDataMap -> {
DatabaseUtils.sendBatteryUsageSlotData(context,
ConvertUtils.convertToBatteryUsageSlotList(batteryDiffDataMap));
if (batteryDiffDataMap.values().stream().anyMatch(data ->
(!data.getAppDiffEntryList().isEmpty()
|| !data.getSystemDiffEntryList().isEmpty()))) {
FeatureFactory.getFactory(context).getPowerUsageFeatureProvider(context)
.detectSettingsAnomaly(context, /* displayDrain= */ 0);
}
});
if (batteryLevelData == null) {
Log.d(TAG, "preprocessBatteryUsageSlots() no new battery usage data.");
return;
@@ -139,8 +147,6 @@ public final class BatteryUsageDataLoader {
// No app usage data or battery diff data at this time.
loadAppUsageData(context);
preprocessBatteryUsageSlots(context);
FeatureFactory.getFactory(context).getPowerUsageFeatureProvider(context)
.detectSettingsAnomaly(context, /* displayDrain= */ 0);
}
Log.d(TAG, String.format(
"loadUsageDataSafely() in %d/ms", System.currentTimeMillis() - start));