Merge "Update filter logic for BatteryDiffEntries" into sc-dev

This commit is contained in:
Wesley Wang
2021-07-01 10:05:38 +00:00
committed by Android (Google) Code Review

View File

@@ -78,6 +78,7 @@ public class AppBatteryPreferenceController extends BasePreferenceController
private String mBatteryPercent; private String mBatteryPercent;
private final String mPackageName; private final String mPackageName;
private final int mUid; private final int mUid;
private final int mUserId;
private boolean mBatteryUsageStatsLoaded = false; private boolean mBatteryUsageStatsLoaded = false;
private boolean mBatteryDiffEntriesLoaded = false; private boolean mBatteryDiffEntriesLoaded = false;
@@ -88,6 +89,7 @@ public class AppBatteryPreferenceController extends BasePreferenceController
mBatteryUtils = BatteryUtils.getInstance(mContext); mBatteryUtils = BatteryUtils.getInstance(mContext);
mPackageName = packageName; mPackageName = packageName;
mUid = uid; mUid = uid;
mUserId = mContext.getUserId();
refreshFeatureFlag(mContext); refreshFeatureFlag(mContext);
if (lifecycle != null) { if (lifecycle != null) {
lifecycle.addObserver(this); lifecycle.addObserver(this);
@@ -173,16 +175,29 @@ public class AppBatteryPreferenceController extends BasePreferenceController
protected BatteryDiffEntry doInBackground(Void... unused) { protected BatteryDiffEntry doInBackground(Void... unused) {
final List<BatteryDiffEntry> batteryDiffEntries = final List<BatteryDiffEntry> batteryDiffEntries =
BatteryChartPreferenceController.getBatteryLast24HrUsageData(mContext); BatteryChartPreferenceController.getBatteryLast24HrUsageData(mContext);
if (batteryDiffEntries != null) { if (batteryDiffEntries == null) {
for (BatteryDiffEntry batteryDiffEntry : batteryDiffEntries) { return null;
if (batteryDiffEntry.mBatteryHistEntry.mUid == mUid
&& batteryDiffEntry.mBatteryHistEntry.mConsumerType
== ConvertUtils.CONSUMER_TYPE_UID_BATTERY) {
return batteryDiffEntry;
}
}
} }
return null; // Filter entry with consumer type to avoid system app,
// then use user id to divide normal app and work profile app,
// return target application from filter list by package name.
return batteryDiffEntries.stream()
.filter(entry -> entry.mBatteryHistEntry.mConsumerType
== ConvertUtils.CONSUMER_TYPE_UID_BATTERY)
.filter(entry -> entry.mBatteryHistEntry.mUserId == mUserId)
.filter(entry -> {
if (entry.mBatteryHistEntry.mPackageName
.equals(mPackageName)) {
Log.i(TAG, "Return target application: "
+ entry.mBatteryHistEntry.mPackageName
+ " | uid: " + entry.mBatteryHistEntry.mUid
+ " | userId: " + entry.mBatteryHistEntry.mUserId);
return true;
}
return false;
})
.findFirst()
.orElse(/* other */null);
} }
@Override @Override