Android - 追查应用使用如此多数据的原因

Android - Track down why app using so much data

我目前在使用大量移动数据的应用程序时遇到问题,我不是 100% 确定为什么,因为典型的请求只是 JSON sent/received 数据,而且通常非常小 ( IE 发送 username/password 用于登录)。一些用户报告每月使用的数据量高达 5 GB。我见过的典型请求大约是 1 MB,每天只触发一次,我见过的最高请求是 3 MB(曾经发生过一次以下载其他内容)。我在所有 AsyncHttpClient 请求之前和之后都使用了以下内容,但没有发现任何可以使它使用那么多数据的东西,因为大多数数据都小于 0.01 MB。

long bytes = TrafficStats.getUidRxBytes(applicationUID) + TrafficStats.getUidTxBytes(applicationUID);

我也尝试在 android studio 中使用分析器,但除非是直接网络调用(应该如此),否则没有什么会超过 100kb。唯一可能使用数据的库函数来自 Firebase 和 Google。有没有更好的方法来追踪这个问题?

更改为 volley 后,我发现最简单的解决方案是使用 stetho 直接从浏览器监控我的网络请求。

将 Stetho 添加到您的构建中

implementation 'com.facebook.stetho:stetho:1.5.1'
implementation 'com.facebook.stetho:stetho-js-rhino:1.5.1'
implementation 'com.github.darshan-kapasi:StethoForVolley:1.2.1' <~ for volley request

将以下截击请求改为

RequestQueue queue = Volley.newRequestQueue(context);

RequestQueue queue = Volley.newRequestQueue(context, new StethoVolleyHurlStack());

在 main 上初始化 activity

Stetho.initializeWithDefaults(this);    

在您的开发机器上,连接您的 phone 然后打开 chrome://inspect/ 和 运行 您的应用程序。您应该看到它显示在设备下,单击检查面板,您可以监控您选择的网络请求。

资源链接

Stetho Github Repo

Stetho Volley Github Repo

您可以尝试通过传递数据的本地主机服务器发送您的网络请求,同时检查通过它的流量