diff options
Diffstat (limited to 'framework-t/src')
| -rw-r--r-- | framework-t/src/android/net/NetworkStatsCollection.java | 20 | ||||
| -rw-r--r-- | framework-t/src/android/net/NetworkStatsHistory.java | 14 |
2 files changed, 28 insertions, 6 deletions
diff --git a/framework-t/src/android/net/NetworkStatsCollection.java b/framework-t/src/android/net/NetworkStatsCollection.java index b59a890a2a..29ea772bc3 100644 --- a/framework-t/src/android/net/NetworkStatsCollection.java +++ b/framework-t/src/android/net/NetworkStatsCollection.java @@ -694,6 +694,26 @@ public class NetworkStatsCollection implements FileRotator.Reader, FileRotator.W } } + /** + * Remove histories which contains or is before the cutoff timestamp. + * @hide + */ + public void removeHistoryBefore(long cutoffMillis) { + final ArrayList<Key> knownKeys = new ArrayList<>(); + knownKeys.addAll(mStats.keySet()); + + for (Key key : knownKeys) { + final NetworkStatsHistory history = mStats.get(key); + if (history.getStart() > cutoffMillis) continue; + + history.removeBucketsStartingBefore(cutoffMillis); + if (history.size() == 0) { + mStats.remove(key); + } + mDirty = true; + } + } + private void noteRecordedHistory(long startMillis, long endMillis, long totalBytes) { if (startMillis < mStartMillis) mStartMillis = startMillis; if (endMillis > mEndMillis) mEndMillis = endMillis; diff --git a/framework-t/src/android/net/NetworkStatsHistory.java b/framework-t/src/android/net/NetworkStatsHistory.java index 301fef9441..b45d44dec1 100644 --- a/framework-t/src/android/net/NetworkStatsHistory.java +++ b/framework-t/src/android/net/NetworkStatsHistory.java @@ -680,19 +680,21 @@ public final class NetworkStatsHistory implements Parcelable { } /** - * Remove buckets older than requested cutoff. + * Remove buckets that start older than requested cutoff. + * + * This method will remove any bucket that contains any data older than the requested + * cutoff, even if that same bucket includes some data from after the cutoff. + * * @hide */ - public void removeBucketsBefore(long cutoff) { + public void removeBucketsStartingBefore(final long cutoff) { // TODO: Consider use getIndexBefore. int i; for (i = 0; i < bucketCount; i++) { final long curStart = bucketStart[i]; - final long curEnd = curStart + bucketDuration; - // cutoff happens before or during this bucket; everything before - // this bucket should be removed. - if (curEnd > cutoff) break; + // This bucket starts after or at the cutoff, so it should be kept. + if (curStart >= cutoff) break; } if (i > 0) { |
