Remove uids with empty history from NetworkStats uid enumeration

Bug: 23018174
Change-Id: I1a482280599e0f5da18a208e727653d4bd4107ec
This commit is contained in:
Zoltan Szatmary-Ban
2015-08-13 16:53:10 +01:00
parent b1f84a006f
commit 06a45679aa

View File

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