当前位置: 首页 > article >正文

android storage_state

storage_state是android用来输出磁盘状态的event类型的日志,下面我们看下它的定义和使用以及磁盘状态介绍。

定义

# ---------------------------
# DeviceStorageMonitorService.java
# ---------------------------
# Storage volume state and usable space in bytes
2749 storage_state (uuid|3),(old_state|1),(new_state|1),(usable|2),(total|2)
03-03 15:16:30.006  1000  2874  3911 I storage_state: [41217664-9172-527a-b3d5-edabb50a7d69,1,1,198541312,501777104896]
03-03 15:19:31.244  1000  2874  3911 I storage_state: [41217664-9172-527a-b3d5-edabb50a7d69,1,1,11362304,501777104896]

storage_state的参数分别是uuid、之前的状态、现在的状态、可用磁盘空间大小,总的磁盘空间大小。

使用

            // Log whenever we notice drastic storage changes
            if ((Math.abs(state.lastUsableBytes - usableBytes) > DEFAULT_LOG_DELTA_BYTES)
                    || oldLevel != newLevel) {
                EventLogTags.writeStorageState(uuid.toString(), oldLevel, newLevel,
                        usableBytes, totalBytes);
                state.lastUsableBytes = usableBytes;
            }

日志的打印需要满足两个条件的至少一个即可,第一个就是上次监控到的可用空间比现在监控到的可用空间大于64M,第二个就是上次监控到的磁盘状态与现在的磁盘状态不相同。

磁盘状态

        private static final int LEVEL_UNKNOWN = -1;
        private static final int LEVEL_NORMAL = 0;
        private static final int LEVEL_LOW = 1;
        private static final int LEVEL_FULL = 2;
adb shell dumpsys devicestoragemonitor
		Known volumes:
  		Default:
    		level=NORMAL lastUsableBytes=997076271104 
    		lowBytes=524288000 fullBytes=1048576
    		path=/data

		mSeq=1 mForceState=UNKNOWN
            int newLevel;
            if (mForceLevel != State.LEVEL_UNKNOWN) {
                // When in testing mode, use unknown old level to force sending
                // of any relevant broadcasts.
                oldLevel = State.LEVEL_UNKNOWN;
                newLevel = mForceLevel;
            } else if (usableBytes <= fullBytes) {
                newLevel = State.LEVEL_FULL;
            } else if (usableBytes <= lowBytes) {
                newLevel = State.LEVEL_LOW;
            } else if (StorageManager.UUID_DEFAULT.equals(uuid)
                    && usableBytes < BOOT_IMAGE_STORAGE_REQUIREMENT) {
                newLevel = State.LEVEL_LOW;
            } else {
                newLevel = State.LEVEL_NORMAL;
            }

LEVEL_FULL: 小于等于1M
LEVEL_LOW:小于等于524M
LEVEL_NORMAL:大于524M


http://www.kler.cn/a/581117.html

相关文章:

  • Opik - 开源 LLM 评估平台
  • 你使用过哪些 Java 并发工具类?
  • Linux运维(三)Linux命令行操作:从菜鸟到高手
  • 文献笔记 - A Survey on Aerial Swarm Robotics
  • 详解部分依赖
  • 文件管理器显示文件的方式是图标还是小图标还是列表需要看ListView_IsIconView宏定义
  • 使用 Ansys Mechanical 和 optiSLang 进行材料模型校准
  • Android 内存泄漏实战:从排查到修复的完整指南
  • 使用dockerfile创建镜像
  • 选择 DotNetBrowser 还是 EO.WebBrowser
  • Driver Development Kit(驱动开发服务)
  • Spark(7)安装Hadoop并运行WordCount程序
  • 复试难度,西电卓越工程师学院(杭研院)考研录取情况
  • 力扣-数组-34 在排序数组中查找元素的第一个和最后一个位置
  • 三、Docker 集群管理与应用
  • 如何查看redis的缓存时间
  • 基于Debian12的SVN和Trac自动安装部署脚本
  • [项目]基于FreeRTOS的STM32四轴飞行器: 七.遥控器按键
  • Linux网络 五种 IO 模型
  • 前端开发中的常见设计模式:全面解析与实践