Merge "Fix issue #15185822: Stability: ArithmeticException: divide by zero" into lmp-preview-dev

This commit is contained in:
Dianne Hackborn
2014-05-23 23:59:23 +00:00
committed by Android (Google) Code Review
5 changed files with 55 additions and 5 deletions

View File

@@ -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"

View File

@@ -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>

View File

@@ -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>

View File

@@ -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();

View File

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