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); }