[Settings] Query historical data in background
Move the query of historical data into background thread to avoid from blocking other query operation in UI thread, Bug: 141833767 Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=DataUsageSummaryPreferenceControllerTest Test: make RunSettingsRoboTests -j ROBOTEST_FILTER=DataUsagePreferenceControllerTest Change-Id: I61e414d70136a0025ddd7373a4f34a99acb89510
This commit is contained in:
@@ -45,6 +45,7 @@ public class DataUsagePreferenceController extends TelephonyBasePreferenceContro
|
||||
|
||||
private Future<NetworkTemplate> mTemplateFuture;
|
||||
private AtomicReference<NetworkTemplate> mTemplate;
|
||||
private Future<Long> mHistoricalUsageLevel;
|
||||
|
||||
public DataUsagePreferenceController(Context context, String key) {
|
||||
super(context, key);
|
||||
@@ -127,11 +128,17 @@ public class DataUsagePreferenceController extends TelephonyBasePreferenceContro
|
||||
final DataUsageController controller = new DataUsageController(context);
|
||||
controller.setSubscriptionId(subId);
|
||||
|
||||
mHistoricalUsageLevel = ThreadUtils.postOnBackgroundThread(() ->
|
||||
controller.getHistoricalUsageLevel(getNetworkTemplate()));
|
||||
|
||||
final DataUsageController.DataUsageInfo usageInfo = getDataUsageInfo(controller);
|
||||
|
||||
long usageLevel = usageInfo.usageLevel;
|
||||
if (usageLevel <= 0L) {
|
||||
usageLevel = controller.getHistoricalUsageLevel(getNetworkTemplate());
|
||||
try {
|
||||
usageLevel = mHistoricalUsageLevel.get();
|
||||
} catch (Exception exception) {
|
||||
}
|
||||
}
|
||||
if (usageLevel <= 0L) {
|
||||
return null;
|
||||
|
Reference in New Issue
Block a user