总结
1、功能
UsageStatsManager用于查询应用使用详情,配置详情,事件日志数据,开发过程中可以通过这个接口获取应用使用数据,然后自定义展示方式。本地数据存储在/data/system/usagestats/目录下,该目录下以不同的类型分为5个文件夹,分别是:
- daily
- weekly
- monthly
- yearly
- version(文件)
当查询的时候,对应了四个不同的变量,去查询对应文件夹下的数据,每个文件的名称是时间戳。四个类型是:
public static final int INTERVAL_DAILY = 0;
/**
* An interval type that spans a week. See {@link #queryUsageStats(int, long, long)}.
*/
public static final int INTERVAL_WEEKLY = 1;
/**
* An interval type that spans a month. See {@link #queryUsageStats(int, long, long)}.
*/
public static final int INTERVAL_MONTHLY = 2;
/**
* An interval type that spans a year. See {@link #queryUsageStats(int, long, long)}.
*/
public static final int INTERVAL_YEARLY = 3;
2、部分细节
- 读取数据的时候先从本地磁盘读取,完了之后再从内存里面读取,两份数据合并到一个列表里面返回。
- 写数据的时候,并不是马上写到磁盘,而是等20分钟之后再往磁盘里面写,避免频繁IO。
- 读写使用数据属于IO操作,客户端不应该在主线程调用读数据接口,即使在工作线程也不应该过于频繁,否则性能会受到很大的影响。
3、流程图概览
清晰图片地址:https://i-blog.csdnimg.cn/blog_migrate/93c6e27a66b2120b071226901b6ec04c.jpeg
文章将会同步到公众号:Android部落格。