OSDN Git Service

Fix issue #16555033: Battery history overflowing too much
authorDianne Hackborn <hackbod@google.com>
Thu, 7 Aug 2014 02:22:46 +0000 (19:22 -0700)
committerDianne Hackborn <hackbod@google.com>
Thu, 7 Aug 2014 19:19:48 +0000 (12:19 -0700)
Use new mechanism to retrieve battery stats, now that they
can be much larger.

Make sure these will ever end up going through an IPC.

Change-Id: Ic582a61d736e24bddc905082c1565ece00fcbb29

src/com/android/settings/fuelgauge/BatteryHistoryDetail.java
src/com/android/settings/fuelgauge/BatteryHistoryPreference.java
src/com/android/settings/fuelgauge/PowerUsageSummary.java

index 248d471..63e4e13 100644 (file)
@@ -18,31 +18,27 @@ package com.android.settings.fuelgauge;
 
 import android.app.Fragment;
 import android.content.Intent;
+import android.os.BatteryStats;
 import android.os.Bundle;
-import android.os.Parcel;
 import android.view.LayoutInflater;
 import android.view.View;
 import android.view.ViewGroup;
 
-import com.android.internal.os.BatteryStatsImpl;
+import com.android.internal.os.BatteryStatsHelper;
 import com.android.settings.R;
 
 public class BatteryHistoryDetail extends Fragment {
     public static final String EXTRA_STATS = "stats";
     public static final String EXTRA_BROADCAST = "broadcast";
 
-    private BatteryStatsImpl mStats;
+    private BatteryStats mStats;
     private Intent mBatteryBroadcast;
 
     @Override
     public void onCreate(Bundle icicle) {
         super.onCreate(icicle);
-        byte[] data = getArguments().getByteArray(EXTRA_STATS);
-        Parcel parcel = Parcel.obtain();
-        parcel.unmarshall(data, 0, data.length);
-        parcel.setDataPosition(0);
-        mStats = com.android.internal.os.BatteryStatsImpl.CREATOR
-                .createFromParcel(parcel);
+        String histFile = getArguments().getString(EXTRA_STATS);
+        mStats = BatteryStatsHelper.statsFromFile(getActivity(), histFile);
         mBatteryBroadcast = getArguments().getParcelable(EXTRA_BROADCAST);
     }
     
index 300b98f..e7326b1 100644 (file)
@@ -47,8 +47,6 @@ public class BatteryHistoryPreference extends Preference {
         setLayoutResource(R.layout.preference_batteryhistory);
         mStats = stats;
         mBatteryBroadcast = batteryBroadcast;
-        // Make it non selectable
-        setSelectable(false);
     }
 
     BatteryStats getStats() {
index e6534eb..c438aec 100644 (file)
@@ -26,7 +26,6 @@ import android.os.BatteryStats;
 import android.os.Bundle;
 import android.os.Handler;
 import android.os.Message;
-import android.os.Parcel;
 import android.os.UserHandle;
 import android.os.UserManager;
 import android.preference.Preference;
@@ -46,8 +45,6 @@ import com.android.settings.R;
 import com.android.settings.SettingsActivity;
 
 import java.util.List;
-import java.util.ArrayList;
-import java.util.Collections;
 
 /**
  * Displays a list of apps and subsystems that consume power, ordered by how much power was
@@ -61,6 +58,8 @@ public class PowerUsageSummary extends PreferenceFragment {
 
     private static final String KEY_APP_LIST = "app_list";
 
+    private static final String BATTERY_HISTORY_FILE = "tmp_bat_history.bin";
+
     private static final int MENU_STATS_TYPE = Menu.FIRST;
     private static final int MENU_STATS_REFRESH = Menu.FIRST + 1;
     private static final int MENU_BATTERY_SAVER = Menu.FIRST + 2;
@@ -116,6 +115,7 @@ public class PowerUsageSummary extends PreferenceFragment {
     @Override
     public void onResume() {
         super.onResume();
+        BatteryStatsHelper.dropFile(getActivity(), BATTERY_HISTORY_FILE);
         updateBatteryStatus(getActivity().registerReceiver(mBatteryInfoReceiver,
                 new IntentFilter(Intent.ACTION_BATTERY_CHANGED)));
         if (mHandler.hasMessages(MSG_REFRESH_STATS)) {
@@ -151,11 +151,9 @@ public class PowerUsageSummary extends PreferenceFragment {
     @Override
     public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
         if (preference instanceof BatteryHistoryPreference) {
-            Parcel hist = Parcel.obtain();
-            mStatsHelper.getStats().writeToParcelWithoutUids(hist, 0);
-            byte[] histData = hist.marshall();
+            mStatsHelper.storeStatsHistoryInFile(BATTERY_HISTORY_FILE);
             Bundle args = new Bundle();
-            args.putByteArray(BatteryHistoryDetail.EXTRA_STATS, histData);
+            args.putString(BatteryHistoryDetail.EXTRA_STATS, BATTERY_HISTORY_FILE);
             args.putParcelable(BatteryHistoryDetail.EXTRA_BROADCAST,
                     mStatsHelper.getBatteryBroadcast());
             SettingsActivity sa = (SettingsActivity) getActivity();