diff --git a/src/com/android/settings/network/telephony/DataUsagePreferenceController.java b/src/com/android/settings/network/telephony/DataUsagePreferenceController.java index b260657f0eb..4499881ca76 100644 --- a/src/com/android/settings/network/telephony/DataUsagePreferenceController.java +++ b/src/com/android/settings/network/telephony/DataUsagePreferenceController.java @@ -35,7 +35,6 @@ import com.android.settingslib.net.DataUsageController; public class DataUsagePreferenceController extends TelephonyBasePreferenceController { private NetworkTemplate mTemplate; - private DataUsageController.DataUsageInfo mDataUsageInfo; public DataUsagePreferenceController(Context context, String key) { super(context, key); @@ -68,18 +67,12 @@ public class DataUsagePreferenceController extends TelephonyBasePreferenceContro preference.setEnabled(false); return; } - long usageLevel = mDataUsageInfo.usageLevel; - if (usageLevel <= 0L) { - final DataUsageController controller = new DataUsageController(mContext); - usageLevel = controller.getHistoricalUsageLevel(mTemplate); - } - final boolean enabled = usageLevel > 0L; - preference.setEnabled(enabled); - - if (enabled) { - preference.setSummary(mContext.getString(R.string.data_usage_template, - DataUsageUtils.formatDataUsage(mContext, mDataUsageInfo.usageLevel), - mDataUsageInfo.period)); + final CharSequence summary = getDataUsageSummary(mContext, mSubId); + if (summary == null) { + preference.setEnabled(false); + } else { + preference.setEnabled(true); + preference.setSummary(summary); } } @@ -90,9 +83,22 @@ public class DataUsagePreferenceController extends TelephonyBasePreferenceContro return; } mTemplate = DataUsageUtils.getDefaultTemplate(mContext, mSubId); + } - final DataUsageController controller = new DataUsageController(mContext); - controller.setSubscriptionId(mSubId); - mDataUsageInfo = controller.getDataUsageInfo(mTemplate); + private CharSequence getDataUsageSummary(Context context, int subId) { + final DataUsageController controller = new DataUsageController(context); + controller.setSubscriptionId(subId); + + final DataUsageController.DataUsageInfo usageInfo = controller.getDataUsageInfo(mTemplate); + + long usageLevel = usageInfo.usageLevel; + if (usageLevel <= 0L) { + usageLevel = controller.getHistoricalUsageLevel(mTemplate); + } + if (usageLevel <= 0L) { + return null; + } + return context.getString(R.string.data_usage_template, + DataUsageUtils.formatDataUsage(context, usageLevel), usageInfo.period); } }