Update filter logic for BatteryDiffEntries

- Use user id and package name to query the battery entry list instead of uid, to handle the
 cases which enter app info page without uid like launch icon -> app
 info

Bug: 178197718
Test: make SettingsRoboTests
Change-Id: I665e57ff3eabf23485455fb2e1af2e0376af1e40
This commit is contained in:
Wesley.CW Wang
2021-06-30 21:35:55 +08:00
parent f01c5cfa8e
commit 15ca9a632f

View File

@@ -78,6 +78,7 @@ public class AppBatteryPreferenceController extends BasePreferenceController
private String mBatteryPercent;
private final String mPackageName;
private final int mUid;
private final int mUserId;
private boolean mBatteryUsageStatsLoaded = false;
private boolean mBatteryDiffEntriesLoaded = false;
@@ -88,6 +89,7 @@ public class AppBatteryPreferenceController extends BasePreferenceController
mBatteryUtils = BatteryUtils.getInstance(mContext);
mPackageName = packageName;
mUid = uid;
mUserId = mContext.getUserId();
refreshFeatureFlag(mContext);
if (lifecycle != null) {
lifecycle.addObserver(this);
@@ -173,16 +175,29 @@ public class AppBatteryPreferenceController extends BasePreferenceController
protected BatteryDiffEntry doInBackground(Void... unused) {
final List<BatteryDiffEntry> batteryDiffEntries =
BatteryChartPreferenceController.getBatteryLast24HrUsageData(mContext);
if (batteryDiffEntries != null) {
for (BatteryDiffEntry batteryDiffEntry : batteryDiffEntries) {
if (batteryDiffEntry.mBatteryHistEntry.mUid == mUid
&& batteryDiffEntry.mBatteryHistEntry.mConsumerType
== ConvertUtils.CONSUMER_TYPE_UID_BATTERY) {
return batteryDiffEntry;
}
}
if (batteryDiffEntries == null) {
return null;
}
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