Remove uids with empty history from NetworkStats uid enumeration
Bug: 23018174 Change-Id: I1a482280599e0f5da18a208e727653d4bd4107ec
This commit is contained in:
@@ -24,6 +24,7 @@ import android.net.NetworkTemplate;
|
|||||||
import android.net.TrafficStats;
|
import android.net.TrafficStats;
|
||||||
import android.os.RemoteException;
|
import android.os.RemoteException;
|
||||||
import android.os.ServiceManager;
|
import android.os.ServiceManager;
|
||||||
|
import android.util.IntArray;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
import dalvik.system.CloseGuard;
|
import dalvik.system.CloseGuard;
|
||||||
@@ -353,7 +354,25 @@ public final class NetworkStats implements AutoCloseable {
|
|||||||
* @throws RemoteException
|
* @throws RemoteException
|
||||||
*/
|
*/
|
||||||
void startUserUidEnumeration() 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();
|
stepHistory();
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -468,11 +487,6 @@ public final class NetworkStats implements AutoCloseable {
|
|||||||
mUidOrUidIndex = uid;
|
mUidOrUidIndex = uid;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setUidEnumeration(int[] uids) {
|
|
||||||
mUids = uids;
|
|
||||||
mUidOrUidIndex = -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void stepUid() {
|
private void stepUid() {
|
||||||
if (mUids != null) {
|
if (mUids != null) {
|
||||||
++mUidOrUidIndex;
|
++mUidOrUidIndex;
|
||||||
|
|||||||
Reference in New Issue
Block a user