0%

低存储机制说明

1. 低存储方案机制部分

1.1. 系统通知提示

获得data分区可用存储空间:

1
Environment.getDataDirectory().getUsableSpace()

1.1.1. 第一档

阈值为100M, 100 *1024 *1024

弹出系统通知

  • 通知标题

    Insufficient internal storage

    内部存储空间不足

  • 通知内容:

    Insufficient internal storage space, some system functions may not work properly, please clean up storage space immediately.

    内部存储空间不足,部分系统功能可能无法正常使用,请立即清理存储空间。

点击通知, 进入存储空间清理界面

1.1.2. 第二档

阈值为50M, 50 *1024 *1024

弹出系统通知, 进入存储空间清理界面

  • 通知标题

    Internal storage is full

    内部存储空间已满

  • 通知内容:

    The internal storage space is full, some system functions will not work properly, please clean up the storage space immediately.

    内部存储空间已满,部分系统功能将无法正常使用,请立即清理存储空间。

点击通知, 进入存储空间清理界面

1.2. 发送sticky广播

系统中常驻广播:

"sprd.intent.action.DEVICE_STORAGE_STATE"

根据档位需求, 在不同可用空间水平下, 广播携带字段current_level不同.

第一档下, current_level为1, 第二档下, current_level为2.

当清理空间后, 可用空间超过第一档, current_level为0.

1.2.1. 应用使用广播建议

在收到广播后, 应check current_level字段

同时, 因广播发送接收有延迟, 广播只作为被动触发条件, 适合没有主动触发条件的场景.

应用在收到广播后, 请再double check下可用空间. 使用如下接口查询, 返回值为byte.

1
Environment.getDataDirectory().getUsableSpace()

对应用来说, 如果有主动触发条件(比如因用户操作触发, 或者满足一定条件触发某个函数)的场景, 不需要监听该广播, 直接使用上面的接口查询内部存储可用空间状态即可.

1.2.2. 查询间隔

系统服务会每隔1min检测一下data的可用空间. 查询到可用空间档位变更时发送广播, 如档位没有变化, 不会重复发送广播.