[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:
Bonian Chen
2020-05-04 11:54:19 +08:00
parent 37c795af3a
commit 3d62032fed
2 changed files with 33 additions and 10 deletions

View File

@@ -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;