gpt4 book ai didi

Android TrafficStats 后台服务?

转载 作者:行者123 更新时间:2023-11-29 22:14:41 25 4
gpt4 key购买 nike

我想获得一些有关获取日期间隔之间的 3G 数据统计信息的帮助。据我所知,我应该使用 TrafficStats(Android api 2.2 或更高版本)。我想将此信息保存到 SQLite 表中以每月显示应用程序的统计信息:

Interval date: 01/01/2012 - 31/01/2012

Google Maps - 1,5 Mb

Google Talk - 0,9 Mb

Facebook app - 5,6 Mb

所以,我认为我应该使用后台服务。这是最好的方法吗?我应该如何尝试在后台服务中执行此操作?你认为我应该如何将信息保存在 SQLite 中?

最佳答案

(@Pabloku,抱歉这个答案来得太晚了,希望它仍然有一些帮助)

首先,如果您希望获取单个应用程序的流量统计信息,但仅限于 3G,则无法使用公共(public) API。 Android 提供了 TrafficStats.getUidTxBytes(int)TrafficStats.getUidRxBytes(int)作为公共(public) API 获取应用程序使用的总字节数,但没有任何(公共(public))接口(interface)将它们分开。

假设这不会毁了你的一天,这里是一个伪代码算法,用于执行你提到的其余内容:

  1. 如有必要(使用 AlarmManager )为范围的开始设置警报,并存储这些值(大概在数据库中)。原因:您可能需要减去这些现有的 TrafficStats 值作为偏移量,如果它们在您的日期范围开始时 > 0。
  2. 同时设置范围结束时的警报。
  3. 创建 BroadcastReceiver接收ACTION_SHUTDOWN .
  4. 在您的 BroacastReceiver 中,记下关闭时您的应用程序的 TrafficStats。原因:TrafficStats 将在每次重启时重置。
    • 如果这是自启动以来的第一次关闭:减去初始偏移量并存储最终值(小心删除初始偏移量)
    • 否则,报告的任何值自启动后都是准确的。
  5. 一旦触发结束警报,记下此时的 TrafficStats,并添加所有之前收集的统计信息
    • (如果手机不知何故在开始和结束之间从未重启,只需执行 endStats - startStats)。

祝你好运!

关于Android TrafficStats 后台服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8749943/

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