【问题标题】:How does Android tracks data usage per application?Android 如何跟踪每个应用程序的数据使用情况?
【发布时间】:2015-10-05 23:27:06
【问题描述】:

Android 可以跟踪从应用程序发送和接收的字节数。
我想知道这些数据是如何计算的。例如,当我运行本机应用程序时,打开 TCP 套接字,发送和接收数据,这些数据都会被计入。
我知道这与 xt_qtaguid 模块有关,它为每个 UID 标记套接字。

【问题讨论】:

    标签: android network-programming iptables netfilter


    【解决方案1】:

    快速狩猎:

    快速查看包/应用程序/设置 (http://androidxref.com/5.1.1_r6/xref/packages/apps/Settings/src/com/android/settings/DataUsageSummary.java#296) 似乎它依赖于

    网络统计服务: http://androidxref.com/5.1.1_r6/xref/frameworks/base/services/core/java/com/android/server/net/NetworkStatsService.java#906

    这似乎归结为阅读:

    mStatsXtIfaceAll = new File(procRoot, "net/xt_qtaguid/iface_stat_all");
    mStatsXtIfaceFmt = new File(procRoot, "net/xt_qtaguid/iface_stat_fmt");
    mStatsXtUid = new File(procRoot, "net/xt_qtaguid/stats");
    

    “net/xt_qtaguid/stats”似乎包含应用级别的信息。

    -- 这里略过几步,但是这个文件只打开读取后,是xt_qtaguid内核模块写的。

    代码: https://android.googlesource.com/kernel/common/+/f0cfc3cc16a15c41107e83f49b61fe2e5a5303be/net/netfilter/xt_qtaguid.c

    内核不是我的专长,我们现在不在系统的“Android”部分,也许这个问题属于 Linux 内核问题而不是 Android 问题? :)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-02-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多