原因:拔掉电池后会导致Battery history的一些数据丢失或者不准确,所以最后算得的“最后使用时间 mEndWallTime” 小与 “开始使用时间 mStartWallTime”,那么得到的 “电池持续时间”就会小于0.
此问题是Google 原生的bug,提供解决方案如下:
此问题是Google 原生的bug,提供解决方案如下:
BatteryHistoryChart.java line 1102 添加 mEndWallTime > mStartWallTime 的判断:
if (mTimeLabels.size() < 2 && mEndWallTime > mStartWallTime) { // Add mEndWallTime > mStartWallTime judgment
// If there are fewer than 2 time labels, then they are useless. Just
// show an axis label giving the entire duration.
mDurationString = Formatter.formatShortElapsedTime(getContext(),
mEndWallTime - mStartWallTime);
mDurationStringWidth = (int)mTextPaint.measureText(mDurationString);
if (DEBUG)
Log.d(TAG, "mStartWallTime: " + mStartWallTime
+ " mEndWallTime: " + mEndWallTime);
} else {
mDurationString = null;
mDurationStringWidth = 0;
}