zoukankan      html  css  js  c++  java
  • Android流量监控 思路,想法


    1,开启一个服务,每5分钟跑动一次更新流量,用于能够准确记录流量
            每一个小时,更新一次流量,用于清除非本月的流量

    2,保存流量的时候,进行判断
            a,若是数据库中保存的   旧流量oldFlow > 文件流量newFlow,说明手机重启过, 保存流量 = 前一次数据库保存流量 + 文件流量
            b,若是数据库中保存的   旧流量oldFlow <= 文件流量newFlow,说明软件消耗了新量,保存流量=oldFlow-newFlow+前一次数据库保存流量
            

    /**
     * 获取每个应用的流量信息
     */
    public List<FlowInfo> getGPRSData() {

    List<FlowInfo> uidList = new ArrayList<FlowInfo>();
    PackageManager pm = context.getPackageManager();
    List<PackageInfo> packinfos = pm
    .getInstalledPackages(PackageManager.GET_UNINSTALLED_PACKAGES
    | PackageManager.GET_PERMISSIONS);

    long newFlow = 0;
    long[] oldStandardFlow = null;

    String date = TimeUtil.getInstance().getStringDate();

    for (PackageInfo info : packinfos) {
    FlowInfo uidInfo = new FlowInfo();
    String[] premissions = info.requestedPermissions;
    if (premissions != null && premissions.length > 0) {
    for (String premission : premissions) {
    if ("android.permission.INTERNET".equals(premission)) {
    int uid = info.applicationInfo.uid;
    uidInfo.setUid(uid);
    newFlow = Long.valueOf(getSndFlowByUid(uid))
    + Long.valueOf(getRcvFlowByUid(uid));
    tableHelp = TableHelp.getInstance(context,
    "FlowMonitors.db", 1);
    sqlite = tableHelp.getSqliteDatabase();
    oldStandardFlow = tableHelp.getOldStandardFlow(sqlite, uid, date); // 保存的旧流量和标准流量
    if (oldStandardFlow[0] > newFlow) { // 旧流量和文件中的新流量对比,旧流量较大说明重启了手机,要保存的流量=文件流量+标准流量,旧流量保存为文件流量
    uidInfo.setOldFlow(newFlow);
    newFlow = oldStandardFlow[1] + newFlow;
    uidInfo.setFlow(newFlow);
    } else {  //若是文件流量大于旧流量,则标准流量=文件流量-旧流量 + 原始标准流量,旧流量保存为新流量
    uidInfo.setOldFlow(newFlow);
    newFlow = newFlow - oldStandardFlow[0] + oldStandardFlow[1];
    uidInfo.setFlow(newFlow);
    }
    uidInfo.setDate(date);
    uidList.add(uidInfo);
    }
    }
    }
    }
    return uidList;
    }
        
    花了1,2周的时间,研究了这样一套流量的监控,不足的地方,多多指教啊!


  • 相关阅读:
    WebFrom 小程序【分页功能 】
    WebForm 【Repeater】展示数据
    WebForm 小项目【人员管理系统】分析
    WebFrom 【内置对象】— —跳转页面,页面传值
    WebForm 【复合控件】
    WebForm 【简单控件】【表单元素】
    WebForm 基础学习
    js对元素属性.内容的操作。定时器。元素的平级,父级,子集关系。
    常用事件【由浅入深】1
    document 对象
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3367727.html
Copyright © 2011-2022 走看看