终极版:Andorid手机流量监测思路与代码实现(一)
来源:互联网 发布:网络麻将换牌软件赌博 编辑:程序博客网 时间:2024/05/14 20:55
首先,先上效果图:包括本月总的wifi流量和234g流量,同时能够统计出本日使用wifi和234g流量最多的APP,并且进行排序(事实上,实现了:每一个APP的每一天和手机总流量的数据都存在SQLite中,所以你想怎样显示就怎样显示)
一、前期准备:
关于Android系统自带API,TrafficStack的使用,其中uid是指每个APP独一无二的标示,在Android中,第三方APP标志大于10000,如10021代表微信这个APP。
1、 getMobileRxBytes() //获取通过Mobile连接收到的字节总数,不包含WiFi
2、 getMobileTxBytes() //Mobile发送的总字节数
3、 getTotalRxBytes() //获取总的接受字节数,包含Mobile和WiFi等
4、 getTotalTxBytes() //总的发送字节数,包含Mobile和WiFi等
5、getUidRxBytes(int uid) //获取某个网络UID的接受字节数
6、 getUidTxBytes(int uid) //获取某个网络UID的发送字节数
需要注意的是,上面的函数,只能计算本次开机都目前为止的流量情况,关机之后重新清零,数据存在文件夹中:
/proc/uid_stat/uid/tcp_send 上传流量
/proc/uid_stat/uid/tcp_rcv 下载流量
二、考虑的细节
利用上述API实现流量的统计,需要解决的问题有:
1、设定Service长期在后台监测本APP的流量情况,设定时间间隔差,如360的流量助手以3S为间隔;
2、解决后台服务被回收的问题(被回收后如何重新启动?如何能继续正确统计?);
3、如何区分出不同日期的流量使用情况?办法是利用数据库+间隔统计法;
4、开机要启动监听,网络状态变化要改变流量监听节约资源,关机要做标示,下次开机重新计算的时候,才知道要加上上次关机的流量值;
5、非正常关机状态,如死机拔掉电池;
6、如何统计3S内的流量差(wifi情况和234g情况)
以上六点,是做出本APP最主要的部分,看起来挺简单,但是细节上要多注意,对于Android四大组件的生命周期要有较好的把握,否则,算出来的数据不准确。
- 终极版:Andorid手机流量监测思路与代码实现(一)
- 剑指Offer题目JAVA版思路与代码(一)
- iOS开发监测手机流量使用情况
- 大流量程序设计与实现--系列一
- android 流量统计实现思路
- android流量监测的实现原理
- Android流量监测的实现原理
- 解析android 流量监测的实现原理
- 解析android 流量监测的实现原理
- Android之TrafficStats实现流量实时监测
- 冒泡排序思路与代码实现(三种版本)
- Android二维码扫描开发(一):实现思路与原理
- 没有模板代码膨胀的STL:一、设计目标与实现思路
- iOS_UIScrollView实现无限滚动,思路与代码
- Andorid 基础知识(一)
- 关闭Andorid后台流量
- andorid流量测试方法
- andorid流量测试方法
- MySQL存储过程和代码分别生成订单号,MySQL拾遗
- leetcode 每日一题 257. Binary Tree Paths
- windows下MSVC兼容的dirent.h
- 十大类库
- MatLab 代码优化 Fast your MatLab code. (2) 寻找性能瓶颈
- 终极版:Andorid手机流量监测思路与代码实现(一)
- androidStudio中出现finished with non-zero exit value 2 或者 finished with non-zero exit value 1
- sqlite3之sqlite3_busy_handler使用详解
- ios 用objective c语言编写的tomcat动画
- 签到 2016.6.9
- c++作业2
- 第一章 Activity的生命周期和启动模式
- 判别分析基础
- hadoop从安装到布署