【问题标题】:How can I check my Android app's network consumption? [closed]如何查看我的 Android 应用的网络消耗? [关闭]
【发布时间】:2026-01-20 02:35:02
【问题描述】:

我需要检查我的 Android 应用的互联网使用情况。在我的应用中,我调用了许多 Web 服务 API。

我想知道我的应用以 kB/MB 为单位完全消耗了多少互联网。

我该如何检查?有什么工具可以检查吗?

【问题讨论】:

  • Stack Overflow 推出 7 年多后,这么简单的问题怎么不重复?
  • @PeterMortensen 实际上我已经标记为重复,但所有问题都与以编程方式获取网络数据使用有关,但在这个问题中,OP 询问了how to get it by using some Tools?

标签: android api network-monitoring


【解决方案1】:

Android Studio 2.0Android Monitor 中引入新的Network 部分,可以帮助您解决问题。

Tx == Transmit Bytes Rx == Receive Bytes

【讨论】:

  • 我知道这是一个老问题,但是如何使用此工具获得一段时间内使用的总兆字节数?该图仅显示特定时间点的传输速率,而不是迄今为止传输的总数。我希望我可以在图表上标记一个部分并得到总和,但不幸的是没有运气。
【解决方案2】:

有三种方式...

  1. 您可以在设备/模拟器中查看。转到设置 -> 数据使用,然后在列表中找到您的应用程序

  2. 在 Eclipse 中,选择 DDMS(透视)-> 从设备中选择您的包(左侧)-> 点击网络统计选项卡 -> 点击开始

  3. 正如已经回答的那样,在 Android Studio 中,转到 Android Monitor(底部选项卡)-> 网络(选项卡)-> 查找 Tx(传输数据)/Rx(接收数据)

【讨论】:

    【解决方案3】:

    出于查看目的,您可以按照 MD 的说明在监视器中查看。

    要存储,您可以以编程方式进行

        int UID = android.os.Process.myUid();
        rxBytes += getUidRxBytes(UID);
        txBytes += getUidTxBytes(UID);
        /**
         * Read UID Rx Bytes
         *
         * @param uid
         * @return rxBytes
         */
        public Long getUidRxBytes(int uid) {
            BufferedReader reader;
            Long rxBytes = 0L;
            try {
                reader = new BufferedReader(new FileReader("/proc/uid_stat/" + uid
                        + "/tcp_rcv"));
                rxBytes = Long.parseLong(reader.readLine());
                reader.close();
            }
            catch (FileNotFoundException e) {
                rxBytes = TrafficStats.getUidRxBytes(uid);
                //e.printStackTrace();
            }
            catch (IOException e) {
                e.printStackTrace();
            }
            return rxBytes;
        }
    
        /**
         * Read UID Tx Bytes
         *
         * @param uid
         * @return txBytes
         */
        public Long getUidTxBytes(int uid) {
            BufferedReader reader;
            Long txBytes = 0L;
            try {
                reader = new BufferedReader(new FileReader("/proc/uid_stat/" + uid
                        + "/tcp_snd"));
                txBytes = Long.parseLong(reader.readLine());
                reader.close();
            }
            catch (FileNotFoundException e) {
                txBytes = TrafficStats.getUidTxBytes(uid);
                //e.printStackTrace();
            }
            catch (IOException e) {
                e.printStackTrace();
            }
            return txBytes;
        }
    }
    

    【讨论】:

    • 很好的样本,对我有很大帮助。
    • 自 Android 6 起无法使用
    【解决方案4】:

    看看:Android Monitor

    您可以监控许多主题。

    你会发现Network Monitor

    在网络监视器中显示正在运行的应用程序:

    按照以下步骤操作:

    • 连接硬件设备。
    • 显示 Android 监视器。
    • 单击“网络”选项卡。
    • 打开一个应用项目并在硬件设备上运行它。
    • 要启动网络监视器,请单击 Pause Pause 图标以取消选择它。

    任何网络流量都开始出现在网络监视器中:

    网络监视器将设备传输和接收千字节数据所需的时间相加。 y 轴以千字节每秒为单位。 x 轴从秒开始,然后是分钟和秒,依此类推。

    • 要停止网络监视器,请再次单击 Pause Pause 图标以将其选中。

    参考:Android Monitor

    【讨论】:

      最近更新 更多