Add try-catch to avoid IllegalStateException in the data parsing

if the BatteryStats service is crashed, we will provide the default instance for all modules in the battery settings, but it will encounter the IllegalStateException if we try to parse its history content (reference: ag/15926630)

Bug: 201729939
Test: make SettingsRoboTests
Change-Id: Ifebb48551e371e7c4e121969cb92cf95aa026812
This commit is contained in:
ykhung
2021-10-12 16:32:18 +08:00
committed by YUKAI HUNG
parent 5a7966884b
commit 72a25f16ee

View File

@@ -21,6 +21,7 @@ import static com.android.settings.Utils.SETTINGS_PACKAGE_NAME;
import android.content.Context;
import android.os.BatteryUsageStats;
import android.os.UidBatteryConsumer;
import android.util.Log;
import androidx.annotation.VisibleForTesting;
@@ -41,6 +42,8 @@ import java.util.concurrent.TimeUnit;
* {@link BatteryTipDetector} since it need the most up-to-date {@code visibleTips}
*/
public class HighUsageDetector implements BatteryTipDetector {
private static final String TAG = "HighUsageDetector";
private BatteryTipPolicy mPolicy;
private BatteryUsageStats mBatteryUsageStats;
private final BatteryInfo mBatteryInfo;
@@ -113,6 +116,10 @@ public class HighUsageDetector implements BatteryTipDetector {
@VisibleForTesting
void parseBatteryData() {
mBatteryInfo.parseBatteryHistory(mDataParser);
try {
mBatteryInfo.parseBatteryHistory(mDataParser);
} catch (IllegalStateException e) {
Log.e(TAG, "parseBatteryData() failed", e);
}
}
}