Merge "[S-QPR1] protect gettinng battery stats from DeadSystemException" into sc-qpr1-dev
This commit is contained in:
@@ -25,6 +25,7 @@ import android.os.BatteryStatsManager;
|
|||||||
import android.os.BatteryUsageStats;
|
import android.os.BatteryUsageStats;
|
||||||
import android.os.SystemClock;
|
import android.os.SystemClock;
|
||||||
import android.text.format.Formatter;
|
import android.text.format.Formatter;
|
||||||
|
import android.util.Log;
|
||||||
import android.util.SparseIntArray;
|
import android.util.SparseIntArray;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
@@ -42,6 +43,7 @@ import com.android.settingslib.utils.PowerUtil;
|
|||||||
import com.android.settingslib.utils.StringUtil;
|
import com.android.settingslib.utils.StringUtil;
|
||||||
|
|
||||||
public class BatteryInfo {
|
public class BatteryInfo {
|
||||||
|
private static final String TAG = "BatteryInfo";
|
||||||
|
|
||||||
public CharSequence chargeLabel;
|
public CharSequence chargeLabel;
|
||||||
public CharSequence remainingLabel;
|
public CharSequence remainingLabel;
|
||||||
@@ -155,8 +157,15 @@ public class BatteryInfo {
|
|||||||
if (batteryUsageStats != null) {
|
if (batteryUsageStats != null) {
|
||||||
stats = batteryUsageStats;
|
stats = batteryUsageStats;
|
||||||
} else {
|
} else {
|
||||||
|
try {
|
||||||
stats = context.getSystemService(BatteryStatsManager.class)
|
stats = context.getSystemService(BatteryStatsManager.class)
|
||||||
.getBatteryUsageStats();
|
.getBatteryUsageStats();
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
Log.e(TAG, "getBatteryInfo() from getBatteryUsageStats()", e);
|
||||||
|
// Use default BatteryUsageStats.
|
||||||
|
stats = new BatteryUsageStats.Builder(
|
||||||
|
new String[0], /* includePowerModels */ false).build();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return getBatteryInfo(context, stats, shortString);
|
return getBatteryInfo(context, stats, shortString);
|
||||||
}
|
}
|
||||||
|
@@ -74,6 +74,14 @@ public class BatteryOptimizeUtils {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setAppUsageState(AppUsageState state) {
|
public void setAppUsageState(AppUsageState state) {
|
||||||
|
try {
|
||||||
|
setAppUsageStateInternal(state);
|
||||||
|
} catch (Exception e) {
|
||||||
|
Log.e(TAG, "setAppUsageState() is failed for " + mPackageName, e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setAppUsageStateInternal(AppUsageState state) {
|
||||||
switch (state) {
|
switch (state) {
|
||||||
case RESTRICTED:
|
case RESTRICTED:
|
||||||
mBatteryUtils.setForceAppStandby(mUid, mPackageName, AppOpsManager.MODE_IGNORED);
|
mBatteryUtils.setForceAppStandby(mUid, mPackageName, AppOpsManager.MODE_IGNORED);
|
||||||
|
@@ -20,6 +20,7 @@ import android.content.Context;
|
|||||||
import android.os.BatteryStatsManager;
|
import android.os.BatteryStatsManager;
|
||||||
import android.os.BatteryUsageStats;
|
import android.os.BatteryUsageStats;
|
||||||
import android.os.BatteryUsageStatsQuery;
|
import android.os.BatteryUsageStatsQuery;
|
||||||
|
import android.util.Log;
|
||||||
|
|
||||||
import com.android.settingslib.utils.AsyncLoaderCompat;
|
import com.android.settingslib.utils.AsyncLoaderCompat;
|
||||||
|
|
||||||
@@ -27,6 +28,7 @@ import com.android.settingslib.utils.AsyncLoaderCompat;
|
|||||||
* Loader to get new {@link BatteryUsageStats} in the background
|
* Loader to get new {@link BatteryUsageStats} in the background
|
||||||
*/
|
*/
|
||||||
public class BatteryUsageStatsLoader extends AsyncLoaderCompat<BatteryUsageStats> {
|
public class BatteryUsageStatsLoader extends AsyncLoaderCompat<BatteryUsageStats> {
|
||||||
|
private static final String TAG = "BatteryUsageStatsLoader";
|
||||||
private final BatteryStatsManager mBatteryStatsManager;
|
private final BatteryStatsManager mBatteryStatsManager;
|
||||||
private final boolean mIncludeBatteryHistory;
|
private final boolean mIncludeBatteryHistory;
|
||||||
|
|
||||||
@@ -42,7 +44,14 @@ public class BatteryUsageStatsLoader extends AsyncLoaderCompat<BatteryUsageStats
|
|||||||
if (mIncludeBatteryHistory) {
|
if (mIncludeBatteryHistory) {
|
||||||
builder.includeBatteryHistory();
|
builder.includeBatteryHistory();
|
||||||
}
|
}
|
||||||
|
try {
|
||||||
return mBatteryStatsManager.getBatteryUsageStats(builder.build());
|
return mBatteryStatsManager.getBatteryUsageStats(builder.build());
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
Log.e(TAG, "loadInBackground() for getBatteryUsageStats()", e);
|
||||||
|
// Use default BatteryUsageStats.
|
||||||
|
return new BatteryUsageStats.Builder(
|
||||||
|
new String[0], /* includePowerModels */ false).build();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -368,8 +368,17 @@ public class BatteryUtils {
|
|||||||
public BatteryInfo getBatteryInfo(final String tag) {
|
public BatteryInfo getBatteryInfo(final String tag) {
|
||||||
final BatteryStatsManager systemService = mContext.getSystemService(
|
final BatteryStatsManager systemService = mContext.getSystemService(
|
||||||
BatteryStatsManager.class);
|
BatteryStatsManager.class);
|
||||||
final BatteryUsageStats batteryUsageStats = systemService.getBatteryUsageStats(
|
BatteryUsageStats batteryUsageStats;
|
||||||
|
try {
|
||||||
|
batteryUsageStats = systemService.getBatteryUsageStats(
|
||||||
new BatteryUsageStatsQuery.Builder().includeBatteryHistory().build());
|
new BatteryUsageStatsQuery.Builder().includeBatteryHistory().build());
|
||||||
|
} catch (RuntimeException e) {
|
||||||
|
Log.e(TAG, "getBatteryInfo() error for getBatteryUsageStats()", e);
|
||||||
|
// Use default BatteryUsageStats.
|
||||||
|
batteryUsageStats =
|
||||||
|
new BatteryUsageStats.Builder(new String[0], /* includePowerModels */ false)
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
final long startTime = System.currentTimeMillis();
|
final long startTime = System.currentTimeMillis();
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user