diff --git a/res/layout/preference_batteryhistory.xml b/res/layout/preference_batteryhistory.xml
index 86856d767b0..a09c6a876e8 100644
--- a/res/layout/preference_batteryhistory.xml
+++ b/res/layout/preference_batteryhistory.xml
@@ -19,7 +19,7 @@
xmlns:app="http://schemas.android.com/apk/res/com.android.settings"
android:layout_width="match_parent"
android:layout_height="wrap_content"
- android:minHeight="128dp"
+ android:minHeight="@dimen/battery_history_chart_height"
android:gravity="center_vertical"
android:id="@+android:id/battery_history_chart"
android:paddingEnd="?android:attr/scrollbarSize"
diff --git a/res/values-h480dp/dimens.xml b/res/values-h480dp/dimens.xml
new file mode 100644
index 00000000000..6610b4f753d
--- /dev/null
+++ b/res/values-h480dp/dimens.xml
@@ -0,0 +1,19 @@
+
+
+
+
+ 160dp
+
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 93d98339125..460fb449ca4 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -29,6 +29,8 @@
16dip
8dip
+ 120dp
+
252dip
440dip
diff --git a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
index f718b424379..47e887a1003 100644
--- a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
+++ b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
@@ -661,6 +661,13 @@ public class BatteryHistoryChart extends View {
return;
}
+ if (mLastWidth == 0 || mLastHeight == 0) {
+ return;
+ }
+
+ mLastWidth = w;
+ mLastHeight = h;
+
int textHeight = mTextDescent - mTextAscent;
int headerTextHeight = mHeaderTextDescent - mHeaderTextAscent;
if (h > (textHeight*12)) {
@@ -736,11 +743,18 @@ public class BatteryHistoryChart extends View {
mCpuRunningPath.reset();
mChargingPath.reset();
+ mTimeLabels.clear();
+ mDateLabels.clear();
+
final long walltimeStart = mStartWallTime;
final long walltimeChange = mEndWallTime-walltimeStart;
long curWalltime = 0;
long lastRealtime = 0;
+ if (walltimeChange == 0) {
+ return;
+ }
+
final int batLow = mBatLow;
final int batChange = mBatHigh-mBatLow;
@@ -924,7 +938,6 @@ public class BatteryHistoryChart extends View {
}
// Create the time labels at the bottom.
- mTimeLabels.clear();
boolean is24hr = is24Hour();
Calendar calStart = Calendar.getInstance();
calStart.setTimeInMillis(mStartWallTime);
@@ -957,7 +970,6 @@ public class BatteryHistoryChart extends View {
}
// Create the date labels if the chart includes multiple days
- mDateLabels.clear();
if (calStart.get(Calendar.DAY_OF_YEAR) != calEnd.get(Calendar.DAY_OF_YEAR) ||
calStart.get(Calendar.YEAR) != calEnd.get(Calendar.YEAR)) {
boolean isDayFirst = isDayFirst();
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
index e6c2c968768..e00e20b9173 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -82,8 +82,9 @@ public class PowerUsageSummary extends PreferenceFragment {
String action = intent.getAction();
if (Intent.ACTION_BATTERY_CHANGED.equals(action)
&& updateBatteryStatus(intent)) {
- mStatsHelper.clearStats();
- refreshStats();
+ if (!mHandler.hasMessages(MSG_REFRESH_STATS)) {
+ mHandler.sendEmptyMessageDelayed(MSG_REFRESH_STATS, 500);
+ }
}
}
};
@@ -110,6 +111,10 @@ public class PowerUsageSummary extends PreferenceFragment {
super.onResume();
updateBatteryStatus(getActivity().registerReceiver(mBatteryInfoReceiver,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED)));
+ if (mHandler.hasMessages(MSG_REFRESH_STATS)) {
+ mHandler.removeMessages(MSG_REFRESH_STATS);
+ mStatsHelper.clearStats();
+ }
refreshStats();
}
@@ -121,6 +126,12 @@ public class PowerUsageSummary extends PreferenceFragment {
super.onPause();
}
+ @Override
+ public void onStop() {
+ super.onStop();
+ mHandler.removeMessages(MSG_REFRESH_STATS);
+ }
+
@Override
public void onDestroy() {
super.onDestroy();
@@ -189,6 +200,7 @@ public class PowerUsageSummary extends PreferenceFragment {
case MENU_STATS_REFRESH:
mStatsHelper.clearStats();
refreshStats();
+ mHandler.removeMessages(MSG_REFRESH_STATS);
return true;
default:
return false;
@@ -258,6 +270,8 @@ public class PowerUsageSummary extends PreferenceFragment {
BatteryEntry.startRequestQueue();
}
+ static final int MSG_REFRESH_STATS = 100;
+
Handler mHandler = new Handler() {
@Override
@@ -279,6 +293,9 @@ public class PowerUsageSummary extends PreferenceFragment {
activity.reportFullyDrawn();
}
break;
+ case MSG_REFRESH_STATS:
+ mStatsHelper.clearStats();
+ refreshStats();
}
super.handleMessage(msg);
}