Android存储空间不足

 

“存储空间不足”data过小的通知分析DeviceStorageMonitorService类

位置

DeviceStorageMonitorService.java (frameworks\base\services\java\com\android\server\)

一. 三个关键变量:

private static final int DEFAULT_THRESHOLD_PERCENTAGE = 10;
private static final int DEFAULT_FULL_THRESHOLD_BYTES = 1*1024*1024; // 1MB
private static final long DEFAULT_DISK_FREE_CHANGE_REPORTING_THRESHOLD = 2 * 1024 * 1024; // 2MB

二. 参数调用的地方
在整个android目录中, 三个常量被调用的地方, 都只是在DeviceStorageMonitorService.java中

DEFAULT_THRESHOLD_PERCENTAGE(10) : private long getMemThreshold();
return 1300234 * 10 = 13,002,340

DEFAULT_FULL_THRESHOLD_BYTES(10M) : private int getMemFullThreshold()
return 10,485,760

DEFAULT_DISK_FREE_CHANGE_REPORTING_THRESHOLD(5M=5,242,880) : private final void restatDataDir();
threshold = 5,242,880 delta = mFreeMem = 101,482,696

三. 函数被调用的地方
DeviceStorageMonitorService构造中

private long mMemLowThreshold = getMemThreshold();

四. DeviceStorageMonitorService的调用追踪

private final void checkMemory(boolean checkCache) -> 判断() ->
private final void sendNotification()

在sendNotification()中将剩余内存的值存入intent中, 然后广播出去, 广播类型为ACTION_MANAGE_PACKAGE_STORAGE
此通知的标题为 “存储空间不足(Low on space)”
通知的内容为 “手机内存空间所剩不多了(Phone storage space is getting low)”

五. DEFAULT_FULL_THRESHOLD_BYTES的调用追踪

private final void checkMemory(boolean checkCache) -> 判断() ->
private final void sendFullNotification() ->
sendStickyBroadcast(intent.ACTION_DEVICE_STORAGE_FULL)

若data目录小于DEFAULT_FULL_THRESHOLD_BYTES, 则不在接收短信.

六. DEFAULT_DISK_FREE_CHANGE_REPORTING_THRESHOLD 调用追踪

private final void checkMemory(boolean checkCache) ->
EventLog.writeEvent(EventLogTags.FREE_STORAGE_CHANGED, mFreeMem)

经过jwisp烧录到真机上发现, 真正有可能有用的是百分比报警, 那只需要设置下面这个参数即可:
DEFAULT_THRESHOLD_PERCENTAGE

转载自 <a href="http://www.jwisp.com/?p=97" title="“存储空间不足”data过小的通知分析DeviceStorageMonitorService类" rel="bookmark">“存储空间不足”data过小的通知分析DeviceStorageMonitorService类 | 卓派</a>
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值