diff options
| -rw-r--r-- | services/core/java/com/android/server/stats/pull/StatsPullAtomService.java | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java index 758877b3f266..907e23f28e2d 100644 --- a/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java +++ b/services/core/java/com/android/server/stats/pull/StatsPullAtomService.java @@ -1168,13 +1168,14 @@ public class StatsPullAtomService extends SystemService { Slog.e(TAG, "baseline is null for " + atomTag + ", return."); return StatsManager.PULL_SKIP; } + final NetworkStatsExt diff = new NetworkStatsExt( - item.stats.subtract(baseline.stats).removeEmptyEntries(), item.transports, + removeEmptyEntries(item.stats.subtract(baseline.stats)), item.transports, item.slicedByFgbg, item.slicedByTag, item.slicedByMetered, item.ratType, item.subInfo, item.oemManaged); // If no diff, skip. - if (diff.stats.size() == 0) continue; + if (!diff.stats.iterator().hasNext()) continue; switch (atomTag) { case FrameworkStatsLog.BYTES_TRANSFER_BY_TAG_AND_METERED: @@ -1193,6 +1194,17 @@ public class StatsPullAtomService extends SystemService { return StatsManager.PULL_SUCCESS; } + @NonNull private static NetworkStats removeEmptyEntries(NetworkStats stats) { + NetworkStats ret = new NetworkStats(0, 1); + for (NetworkStats.Entry e : stats) { + if (e.getRxBytes() != 0 || e.getRxPackets() != 0 || e.getTxBytes() != 0 + || e.getTxPackets() != 0 || e.getOperations() != 0) { + ret = ret.addEntry(e); + } + } + return ret; + } + private void addNetworkStats(int atomTag, @NonNull List<StatsEvent> ret, @NonNull NetworkStatsExt statsExt) { for (NetworkStats.Entry entry : statsExt.stats) { @@ -1444,12 +1456,8 @@ public class StatsPullAtomService extends SystemService { @NonNull private NetworkStats sliceNetworkStats(@NonNull NetworkStats stats, @NonNull Function<NetworkStats.Entry, NetworkStats.Entry> slicer) { NetworkStats ret = new NetworkStats(0, 1); - NetworkStats.Entry entry = new NetworkStats.Entry(); for (NetworkStats.Entry e : stats) { - if (slicer != null) { - entry = slicer.apply(e); - } - ret = ret.addEntry(entry); + ret = ret.addEntry(slicer.apply(e)); } return ret; } |