Android数据计数器差异(应用总数之和<总数)

时间:2018-10-12 08:39:41

标签: android networkstatsmanager android-data-usage

我试图了解仅由几个应用程序引起的数据差异的原因。在Tidal和Apple音乐中,如果我在听曲目时跳过曲目,我将立即获得所有应用程序数据使用量之和与设备总音量之间的10%到15%的数据差异。

测试用例

启用了“数据保护程序”以将背景数据限制到最小,从而通过潮汐(跳过轨道)执行36.03MiB。

Android数据使用情况计数器(设置-连接-数据使用情况)

总计

 - Total                             36.03MiB

应用

 - Tidal                             31 MiB
 - Google Play Services              448.04 KiB
 - My Data Manager                   59.9 KiB
 - com.samsung.accessory.wmmanager   10.94 KiB
 - Google Play Store                 5.27 KiB
 - Android.OS                        5.13 KiB
 - Samsung Push Service              3.59 KiB
 -----------------------------------------------
 - Total of all Apps                 31.52 MiB

缺少数据

 - Total                             4.51 MiB

我的数据管理器

对于完全相同的数据测试,“我的数据管理器”报告相同的值

 - Tidal                             30.8 MiB
 - etc

NetworkStatsManager

在我的跟踪应用程序中,我使用NetworkStatsManager.QuerySummaryForDevice作为总体积,并使用存储桶uid作为包标识符从NetworkStatsManager.QuerySummary构建应用程序总计。这已在多个Oreo设备上得到证实。

由此我得到:

QuerySummaryForDevice

 - Total                                        37777120 (36.027MiB)

QuerySummary

 - Tidal (com.aspiro.tidal)                     32511933 (31.005MiB)
 - Google Play Services (com.google.uid.shared) 459244 (448.48KiB)
 - My Data Manager (com.mobidia.android.mdm)    61333 (59.90KiB)
 - com.samsung.accessory.wmmanager              11196 (10.933KiB)
 - Google Play Store (com.android.vending)      5397 (5.271KiB)
 - Android.OS (com.uid.system)                  5246 (5.123KiB)
 - Samsung Push Service (com.sec.app.push)      3677 (3.591KiB)
 -------------------------------------------------------------------
 - Total of all Apps                            33058026 (31.527MiB)

缺少数据

 - Total                                        4719094 (4.500MiB)

因此,相同的结果在获取/查看读数时会产生或略有时间差异。

作为第四个确认,我在测试前后将/ proc / net / xt_qtaguid / iface_stats_all和/ proc / net / xt_qtaguid / stats文件拉出,并且图均再次排列在上述方法的几个字节之内。

数据包计数数字也遵循相同的模式,在总数据使用量和应用程序总数之间缺少〜3000,因此我认为这可能不归因于应用程序计数器中未跟踪的数据包标头。

所以我的问题是:

  • 鉴于其他所有应用程序均能正确跟踪,因此这些数据丢失是否有逻辑上的原因?
  • 是否有任何导致xt_qtaguid / stats或NetworkStatsManager无法跟踪的系统服务?

1 个答案:

答案 0 :(得分:0)

您的第一个查询,我知道它为什么会发生误算。

Rest API作为请求-响应方式。您发送一个请求,响应就来了,您可以操纵响应。但有时会出现类似404401的错误或无响应等。 发生这种情况时,系统可能会错误地计算数据包。 有时系统服务无法通过android中的网络管理器进行跟踪。