0%

SkyEye 性能监控

目的
  • 定位异常问题
  • 提升app性能
特点
  • AOP 非侵入式
  • 性能损耗小
方案
  • 监控模块
    • AppStart
    • PageSpeed
    • FPS
    • Block
  • 架构
    • Module 模块,注入Config,启动Engine
    • Engine 引擎,任务执行者
    • Config 配置
    • IInfo 数据
  • AppStart 和 PageSpeed
    • AppStart
      • Application attach中记录开始时间
      • 第一个Activity渲染完成之后,记录结束时间
    • PageSpeed
      • Activity onCreate中记录开始时间
      • Activity 渲染完成后记录结束时间
    • 渲染完成时间节点:DocorView.post(Runnable),消息执行完成
    • 处理数据时间节点:onDestory
  • Fps
    • 算法:获取单位时间(t)内执行次数(count),fps = count/t
    • 工作方式
      • UI线程收集t和count
      • 工作线程计算fps
    • 处理数据时间节点:工作线程每秒计算一次fps(需要优化)
  • Block
    • 原理
      • Looper中注入Printer
      • Looper中轮训执行消息时,每个消息的 start 和 end 会触发printer.println
    • 工作方式
      • UI线程:两次println(dispatch和end)
      • 工作线程:dispatch Handler延迟5秒发送一个消息,end时移除这个消息,如果5秒之内没有移除,将视为block