diff options
Diffstat (limited to 'src/com/android/settings/net/ChartDataLoader.java')
-rw-r--r-- | src/com/android/settings/net/ChartDataLoader.java | 52 |
1 files changed, 30 insertions, 22 deletions
diff --git a/src/com/android/settings/net/ChartDataLoader.java b/src/com/android/settings/net/ChartDataLoader.java index 09e6e3b..e0336b7 100644 --- a/src/com/android/settings/net/ChartDataLoader.java +++ b/src/com/android/settings/net/ChartDataLoader.java @@ -21,41 +21,44 @@ import static android.net.NetworkStats.SET_FOREGROUND; import static android.net.NetworkStats.TAG_NONE; import static android.net.NetworkStatsHistory.FIELD_RX_BYTES; import static android.net.NetworkStatsHistory.FIELD_TX_BYTES; +import static android.text.format.DateUtils.HOUR_IN_MILLIS; import android.content.AsyncTaskLoader; import android.content.Context; -import android.net.INetworkStatsService; +import android.net.INetworkStatsSession; import android.net.NetworkStatsHistory; import android.net.NetworkTemplate; import android.os.Bundle; import android.os.RemoteException; +import com.android.settings.DataUsageSummary.AppItem; + /** * Loader for historical chart data for both network and UID details. */ public class ChartDataLoader extends AsyncTaskLoader<ChartData> { private static final String KEY_TEMPLATE = "template"; - private static final String KEY_UIDS = "uids"; + private static final String KEY_APP = "app"; private static final String KEY_FIELDS = "fields"; - private final INetworkStatsService mStatsService; + private final INetworkStatsSession mSession; private final Bundle mArgs; - public static Bundle buildArgs(NetworkTemplate template, int[] uids) { - return buildArgs(template, uids, FIELD_RX_BYTES | FIELD_TX_BYTES); + public static Bundle buildArgs(NetworkTemplate template, AppItem app) { + return buildArgs(template, app, FIELD_RX_BYTES | FIELD_TX_BYTES); } - public static Bundle buildArgs(NetworkTemplate template, int[] uids, int fields) { + public static Bundle buildArgs(NetworkTemplate template, AppItem app, int fields) { final Bundle args = new Bundle(); args.putParcelable(KEY_TEMPLATE, template); - args.putIntArray(KEY_UIDS, uids); + args.putParcelable(KEY_APP, app); args.putInt(KEY_FIELDS, fields); return args; } - public ChartDataLoader(Context context, INetworkStatsService statsService, Bundle args) { + public ChartDataLoader(Context context, INetworkStatsSession session, Bundle args) { super(context); - mStatsService = statsService; + mSession = session; mArgs = args; } @@ -68,11 +71,11 @@ public class ChartDataLoader extends AsyncTaskLoader<ChartData> { @Override public ChartData loadInBackground() { final NetworkTemplate template = mArgs.getParcelable(KEY_TEMPLATE); - final int[] uids = mArgs.getIntArray(KEY_UIDS); + final AppItem app = mArgs.getParcelable(KEY_APP); final int fields = mArgs.getInt(KEY_FIELDS); try { - return loadInBackground(template, uids, fields); + return loadInBackground(template, app, fields); } catch (RemoteException e) { // since we can't do much without history, and we don't want to // leave with half-baked UI, we bail hard. @@ -80,26 +83,31 @@ public class ChartDataLoader extends AsyncTaskLoader<ChartData> { } } - private ChartData loadInBackground(NetworkTemplate template, int[] uids, int fields) + private ChartData loadInBackground(NetworkTemplate template, AppItem app, int fields) throws RemoteException { final ChartData data = new ChartData(); - data.network = mStatsService.getHistoryForNetwork(template, fields); - - if (uids != null) { - data.detailDefault = null; - data.detailForeground = null; + data.network = mSession.getHistoryForNetwork(template, fields); + if (app != null) { // load stats for current uid and template - for (int uid : uids) { + final int size = app.uids.size(); + for (int i = 0; i < size; i++) { + final int uid = app.uids.keyAt(i); data.detailDefault = collectHistoryForUid( template, uid, SET_DEFAULT, data.detailDefault); data.detailForeground = collectHistoryForUid( template, uid, SET_FOREGROUND, data.detailForeground); } - data.detail = new NetworkStatsHistory(data.detailForeground.getBucketDuration()); - data.detail.recordEntireHistory(data.detailDefault); - data.detail.recordEntireHistory(data.detailForeground); + if (size > 0) { + data.detail = new NetworkStatsHistory(data.detailForeground.getBucketDuration()); + data.detail.recordEntireHistory(data.detailDefault); + data.detail.recordEntireHistory(data.detailForeground); + } else { + data.detailDefault = new NetworkStatsHistory(HOUR_IN_MILLIS); + data.detailForeground = new NetworkStatsHistory(HOUR_IN_MILLIS); + data.detail = new NetworkStatsHistory(HOUR_IN_MILLIS); + } } return data; @@ -124,7 +132,7 @@ public class ChartDataLoader extends AsyncTaskLoader<ChartData> { private NetworkStatsHistory collectHistoryForUid( NetworkTemplate template, int uid, int set, NetworkStatsHistory existing) throws RemoteException { - final NetworkStatsHistory history = mStatsService.getHistoryForUid( + final NetworkStatsHistory history = mSession.getHistoryForUid( template, uid, set, TAG_NONE, FIELD_RX_BYTES | FIELD_TX_BYTES); if (existing != null) { |