summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/net/ChartDataLoader.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/android/settings/net/ChartDataLoader.java')
-rw-r--r--src/com/android/settings/net/ChartDataLoader.java52
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) {