gpt4 book ai didi

android - 如何获取我的应用程序的移动数据使用情况(例如使用 TrafficStats)?

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:57:32 27 4
gpt4 key购买 nike

(我认为这是一个常见问题,但请不要太快将其标记为重复,因为我相信我的回答为讨论增添了新内容。)

相关的API是TrafficStats ,它从例如获取数据/proc/uid_stat/.

统计信息必须包括 GCM 等,而不仅仅是我发起的内容,因此基于线程和标记的计数器是不够的。

第一个问题是明显缺少基于 UID(即每个应用程序)获取移动数据使用情况的 API。有 getMobile API 和 getUid API,但没有结合它们的 API。我在下面提出一个解决方案作为一个答案。

更重要的是,我的印象是 TrafficStats 有太多错误,无法用于此一般用途。我也把它作为一个可能的答案,如果它被接受,那么最好的解决方案是手动计算数据使用量。

最佳答案

这是我的初步解决方案。 API 实际上以多种方式损坏,包括旧的和新的,所以这只是一个解决方案,如果它们被修复,就可以使用。

获取应用的统计信息很简单:

int uid = android.os.Process.myUid();
txBytesInitial = TrafficStats.getUidTxBytes(uid);
rxBytesInitial = TrafficStats.getUidRxBytes(uid);

因此,每次网络连接丢失(或应用程序关闭,或应用程序逻辑需要统计信息)时,您的应用程序数据使用量的增量都会根据 NetworkInfo.getType() 添加到您的统计信息中。您需要维护最后一次检索以用于增量计算,并且这些需要存储在例如SharedPreferences 并在手机重启或方向错误时重置(取决于设备,它们可以因重启以外的原因重置)。

参见 this useful SO post关于这些 API 的一些额外解释(例如,它们不包括数据包开销,仅包括有效负载)。

关于android - 如何获取我的应用程序的移动数据使用情况(例如使用 TrafficStats)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19435331/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com