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的可用空间. 查询到可用空间档位变更时
发送广播, 如档位没有变化, 不会重复发送广播.