Make BatterySettings Asynchronous and use enhanced estimate
this CL changes BatteryInfo methods to all use the async style callback approach it had for one of the methods. Non-async methods are now annotated to only be used in worker threads. BatteryInfo can now be obtained via callback by calling one of the async methods. Alternatively if there is a worker thread available the synchronous methods similar to the old ones can be used. The callback methods have all been changed so that they cascade to a async method that takes all the required info as paremeters. This will minimize the amount of churn in files that currently use BatteryInfo. A new loader was created that can be used to get BatteryInfo in places that wish to get it. This loader is used in PowerUsageSummary to get the BatteryInfo. Test: Robotests Bug: 38399275 Bug: 38398949 Bug: 38399654 Change-Id: Ic5a82d8ca4c85fad1b883226327ec083badf861d
This commit is contained in:
@@ -20,7 +20,6 @@ import android.content.Intent;
|
||||
import android.os.BatteryStats;
|
||||
import android.os.BatteryStats.HistoryItem;
|
||||
import android.os.Bundle;
|
||||
import android.os.SystemClock;
|
||||
import android.util.TypedValue;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
@@ -91,24 +90,25 @@ public class BatteryHistoryDetail extends SettingsPreferenceFragment {
|
||||
}
|
||||
|
||||
private void updateEverything() {
|
||||
BatteryInfo info = BatteryInfo.getBatteryInfo(getContext(), mBatteryBroadcast, mStats,
|
||||
SystemClock.elapsedRealtime() * 1000);
|
||||
final View view = getView();
|
||||
info.bindHistory((UsageView) view.findViewById(R.id.battery_usage), mChargingParser,
|
||||
mScreenOn, mGpsParser, mFlashlightParser, mCameraParser, mWifiParser, mCpuParser,
|
||||
mPhoneParser);
|
||||
((TextView) view.findViewById(R.id.charge)).setText(info.batteryPercentString);
|
||||
((TextView) view.findViewById(R.id.estimation)).setText(info.remainingLabel);
|
||||
BatteryInfo.getBatteryInfo(getContext(), info -> {
|
||||
final View view = getView();
|
||||
info.bindHistory((UsageView) view.findViewById(R.id.battery_usage), mChargingParser,
|
||||
mScreenOn, mGpsParser, mFlashlightParser, mCameraParser, mWifiParser,
|
||||
mCpuParser, mPhoneParser);
|
||||
((TextView) view.findViewById(R.id.charge)).setText(info.batteryPercentString);
|
||||
((TextView) view.findViewById(R.id.estimation)).setText(info.remainingLabel);
|
||||
|
||||
bindData(mChargingParser, R.string.battery_stats_charging_label, R.id.charging_group);
|
||||
bindData(mScreenOn, R.string.battery_stats_screen_on_label, R.id.screen_on_group);
|
||||
bindData(mGpsParser, R.string.battery_stats_gps_on_label, R.id.gps_group);
|
||||
bindData(mFlashlightParser, R.string.battery_stats_flashlight_on_label,
|
||||
R.id.flashlight_group);
|
||||
bindData(mCameraParser, R.string.battery_stats_camera_on_label, R.id.camera_group);
|
||||
bindData(mWifiParser, R.string.battery_stats_wifi_running_label, R.id.wifi_group);
|
||||
bindData(mCpuParser, R.string.battery_stats_wake_lock_label, R.id.cpu_group);
|
||||
bindData(mPhoneParser, R.string.battery_stats_phone_signal_label, R.id.cell_network_group);
|
||||
bindData(mChargingParser, R.string.battery_stats_charging_label, R.id.charging_group);
|
||||
bindData(mScreenOn, R.string.battery_stats_screen_on_label, R.id.screen_on_group);
|
||||
bindData(mGpsParser, R.string.battery_stats_gps_on_label, R.id.gps_group);
|
||||
bindData(mFlashlightParser, R.string.battery_stats_flashlight_on_label,
|
||||
R.id.flashlight_group);
|
||||
bindData(mCameraParser, R.string.battery_stats_camera_on_label, R.id.camera_group);
|
||||
bindData(mWifiParser, R.string.battery_stats_wifi_running_label, R.id.wifi_group);
|
||||
bindData(mCpuParser, R.string.battery_stats_wake_lock_label, R.id.cpu_group);
|
||||
bindData(mPhoneParser, R.string.battery_stats_phone_signal_label,
|
||||
R.id.cell_network_group);
|
||||
}, mStats, false /* shortString */);
|
||||
}
|
||||
|
||||
private void bindData(BatteryActiveProvider provider, int label, int groupId) {
|
||||
|
||||
Reference in New Issue
Block a user