diff options
author | Esteban Talavera <etalavera@google.com> | 2015-08-17 14:47:49 +0000 |
---|---|---|
committer | Android (Google) Code Review <android-gerrit@google.com> | 2015-08-17 14:47:49 +0000 |
commit | 5d467ac54ab0390d6b911628d56294bb4277d2f1 (patch) | |
tree | 69bf6acfeb61220c6cf26766e3a441d25852ee58 /core | |
parent | 4fd784e15228fb208368869b7190d5dfb9b6f95b (diff) | |
parent | 887cffea244c88ec06d9dbec1792f05eea87a7c6 (diff) | |
download | frameworks_base-5d467ac54ab0390d6b911628d56294bb4277d2f1.zip frameworks_base-5d467ac54ab0390d6b911628d56294bb4277d2f1.tar.gz frameworks_base-5d467ac54ab0390d6b911628d56294bb4277d2f1.tar.bz2 |
Merge "Remove uids with empty history from NetworkStats uid enumeration" into mnc-dev
Diffstat (limited to 'core')
-rw-r--r-- | core/java/android/app/usage/NetworkStats.java | 26 |
1 files changed, 20 insertions, 6 deletions
diff --git a/core/java/android/app/usage/NetworkStats.java b/core/java/android/app/usage/NetworkStats.java index 9d5eabb..ef08eb9 100644 --- a/core/java/android/app/usage/NetworkStats.java +++ b/core/java/android/app/usage/NetworkStats.java @@ -24,6 +24,7 @@ import android.net.NetworkTemplate; import android.net.TrafficStats; import android.os.RemoteException; import android.os.ServiceManager; +import android.util.IntArray; import android.util.Log; import dalvik.system.CloseGuard; @@ -353,7 +354,25 @@ public final class NetworkStats implements AutoCloseable { * @throws RemoteException */ void startUserUidEnumeration() throws RemoteException { - setUidEnumeration(mSession.getRelevantUids()); + // TODO: getRelevantUids should be sensitive to time interval. When that's done, + // the filtering logic below can be removed. + int[] uids = mSession.getRelevantUids(); + // Filtering of uids with empty history. + IntArray filteredUids = new IntArray(uids.length); + for (int uid : uids) { + try { + NetworkStatsHistory history = mSession.getHistoryIntervalForUid(mTemplate, uid, + android.net.NetworkStats.SET_ALL, android.net.NetworkStats.TAG_NONE, + NetworkStatsHistory.FIELD_ALL, mStartTimeStamp, mEndTimeStamp); + if (history != null && history.size() > 0) { + filteredUids.add(uid); + } + } catch (RemoteException e) { + Log.w(TAG, "Error while getting history of uid " + uid, e); + } + } + mUids = filteredUids.toArray(); + mUidOrUidIndex = -1; stepHistory(); } @@ -468,11 +487,6 @@ public final class NetworkStats implements AutoCloseable { mUidOrUidIndex = uid; } - private void setUidEnumeration(int[] uids) { - mUids = uids; - mUidOrUidIndex = -1; - } - private void stepUid() { if (mUids != null) { ++mUidOrUidIndex; |