Android系统服务DropBoxManagerService详解与实践应用( 四 )

  • 临时文件目录:根据文件类型、优先级设置不同目录来存放临时文件
  • 上报数据目录:临时文件目录中的文件会通过rename方案写到上报数据目录
  • 消费者:上报进程,上报进程会通过FileObserver监听变化,从而来上报文件
  • 整体的流程图如下:
    Android系统服务DropBoxManagerService详解与实践应用

    文章插图
    3.3 确定对外接口
    1. 获取文件的接口
    2. 存文件的接口
    3. 统计文件(类型,数量)的接口
    4. 更改部分配置策略的接口
    5. 主动上报的接口
    6. 其它自定义参数的接口
    3.4 确定收集管控策略
    1. 是否允许收集:该配置关闭后,本地不会执行任何收集行为
    2. 日志存储目录:私有目录固化出一个空间
    3. 文件命名方式:参照DBMS,进程名_日志类型_前后台@时间戳.txt.gz
    4. 日志类型开关:每个日志类型设置是否允许手机
    5. 收集日志类型:崩溃日志,运行时日志,内存快照,捕获日志,其它自定义日志等
    6. 日志存活时长:参照DBMS,超过一定时间,则删除文件
    7. 日志存储空间:参照DBMS,设置一个手机可用存储的比例·
    8. 日志文件数量:超过指定数量,则删除部分文件;参照DBMS,当可用存储较低的情况,应该存储更少的文件数量
    9. 其余初始化的一些时机,同样参考DBMS
    3.5 确定上报管控策略
    1. 是否允许上报,该配置关闭后,不允许上报行为
    2. 是否允许在流量情况下上报,该配置设置不允许后,只允许在wifi情况下上报
    3. 流量情况下单次、单日、单月最多可上报的文件大小,该配置控制流量情况下,应用在上报时可以上报的文件大小
    4. wifi情况下单次、单日、单月最多可上报的文件大小,该配置控制wifi情况下,应用在上报时可以上报的文件大小
    5. 上报间隔时间,该配置控制低优先级的文件上报时间间隔
    6. 上报失败次数限制,该配置控制在失败一定次数以后,不再允许上报
    7. 上报优先级(低优先级的日志无需频繁上报)
    8. 弱网络情况本次上报的文件大小
    9. 单次、单日、单月允许使用的流量大小,该配置控制应用在上报时可以使用的流量大小
    10. 可上报的最低电量限制,该配置控制上报情况下最小电量限制
    3.6 收集日志方案
    • DropBox日志:先读取到本地,然后存储上报
    • 运行时日志:利用adb logcat命令输出日志到本地储存上
    • 内存快照:dump Hprof文件,然后进行一些裁剪,以便于能够以更小的体积上传
    • 其它日志:实时输出记录到本地,按需上报
    以上具体方案不作为本次重点,不再详述 。
    3.7 写入日志方案
    Android系统服务DropBoxManagerService详解与实践应用

    文章插图
    通过网络课程的学习,了解到mmap的性能非常高,所以最终采用“多进程写+mmap”的方案,并且避免了跨进程的调用堆积,效率很高
    3.8 上报日志方案参照DBMS添加文件的实时和延时通知方案,上报也分为实时上报和延时上报
    • 实时上报:出现一份日志,就直接上报,针对重要性较高的日志
    • 延时上报:达到一定数量,或者达到一定时间进行上报

    Android系统服务DropBoxManagerService详解与实践应用

    文章插图
    3.9 数据监控3.9.1 质量监控
    Android系统服务DropBoxManagerService详解与实践应用

    文章插图
     
    3.9.2 容灾监控
    Android系统服务DropBoxManagerService详解与实践应用


    推荐阅读