我想在android中编写一个服务,它将跟踪后台的数据使用情况。当捕获数据使用事件时,我会将详细信息保存在本地数据库中。
我在android中读到了关于TrafficStats的类,但是只有在活动开始时它才会检查一次。我想要一个连续的后台进程。
我甚至找到了一个示例项目 - https://github.com/commonsguy/cw-andtuning/tree/master/TrafficMonitor
如帖子中所述 - How to measure data usage of my app
提前致谢。
答案 0 :(得分:3)
您需要执行以下操作:
创建一个存储数据使用值的本地数据库。
启动连续/定期运行的服务,以计算/重新计算数据使用情况。
服务计算数据使用后,将数据添加到数据使用表中。
要创建本地数据库,您可以参考tutorial
上的sqlite以下是启动服务的方法Creating a Service in Android
修改强>
如果有任何新的数据使用,则无法获得通知。您必须使用将连续或定期运行的服务定期检查。
您可以使用以下代码计算用法:
int UID=Process.myUid();
long recived = TrafficStats.getUidRxBytes(UID);
long send = TrafficStats.getUidTxBytes(UID);
根据您的要求,您可以使用的其他功能包括:
long initialRX = TrafficStats.getTotalRxBytes();// recieved
long initialTx = TrafficStats.getTotalTxBytes();// sent
long initialMobRX = TrafficStats.getMobileRxBytes();
long initialMobTx = TrafficStats.getMobileTxBytes();
请记住,即TrafficStats会返回一个累计值。因此,您必须减去initail值才能知道使用量的增量
当电话关闭时,每当进程被杀死时,TrafficStats计数器都会被重置。因此,您必须添加代码来处理它。
相关链接:
TrafficStats Api android and calculation of daily data usage