diff --git a/res/layout/preference_batteryhistory.xml b/res/layout/preference_batteryhistory.xml
index 86856d7..a09c6a8 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 0000000..6610b4f
--- /dev/null
+++ b/res/values-h480dp/dimens.xml
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2014 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<resources>
+    <dimen name="battery_history_chart_height">160dp</dimen>
+</resources>
diff --git a/res/values/dimens.xml b/res/values/dimens.xml
index 93d9833..460fb44 100755
--- a/res/values/dimens.xml
+++ b/res/values/dimens.xml
@@ -29,6 +29,8 @@
     <dimen name="bind_app_widget_dialog_checkbox_bottom_padding">16dip</dimen>
     <dimen name="installed_app_details_bullet_offset">8dip</dimen>
 
+    <dimen name="battery_history_chart_height">120dp</dimen>
+
     <dimen name="data_usage_chart_height">252dip</dimen>
     <dimen name="data_usage_chart_optimalWidth">440dip</dimen>
 
diff --git a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
index f718b42..47e887a 100644
--- a/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
+++ b/src/com/android/settings/fuelgauge/BatteryHistoryChart.java
@@ -661,6 +661,13 @@
             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 @@
         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 @@
         }
 
         // Create the time labels at the bottom.
-        mTimeLabels.clear();
         boolean is24hr = is24Hour();
         Calendar calStart = Calendar.getInstance();
         calStart.setTimeInMillis(mStartWallTime);
@@ -957,7 +970,6 @@
         }
 
         // 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 e6c2c96..e00e20b 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -82,8 +82,9 @@
             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 @@
         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();
     }
 
@@ -122,6 +127,12 @@
     }
 
     @Override
+    public void onStop() {
+        super.onStop();
+        mHandler.removeMessages(MSG_REFRESH_STATS);
+    }
+
+    @Override
     public void onDestroy() {
         super.onDestroy();
         if (getActivity().isChangingConfigurations()) {
@@ -189,6 +200,7 @@
             case MENU_STATS_REFRESH:
                 mStatsHelper.clearStats();
                 refreshStats();
+                mHandler.removeMessages(MSG_REFRESH_STATS);
                 return true;
             default:
                 return false;
@@ -258,6 +270,8 @@
         BatteryEntry.startRequestQueue();
     }
 
+    static final int MSG_REFRESH_STATS = 100;
+
     Handler mHandler = new Handler() {
 
         @Override
@@ -279,6 +293,9 @@
                         activity.reportFullyDrawn();
                     }
                     break;
+                case MSG_REFRESH_STATS:
+                    mStatsHelper.clearStats();
+                    refreshStats();
             }
             super.handleMessage(msg);
         }
