8.1插入SD卡后机器本身内存显示不一致

在Android系统中,插入SD卡后,Setting应用显示的内存使用情况存在不一致。问题源于不同代码路径调用了File的getFreeSpace()和getUsableSpace()方法,二者对剩余空间的计算存在差异。getUsableSpace()考虑了更多权限和系统限制,导致显示的已用空间较大。文中提出了两种解决方法:统一使用getFreeSpace()或getUsableSpace(),但两种方法分别会导致与文件管理器显示不一致的问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

8.1 Setting中,当插入SD卡,会显示两个界面,一个内存显示已使用3.42GB,一个显示已使用3.89GB,差异比较大,如下图
在这里插  入图片描述 图1
在这里插入图片描述图2
经查看代码,图1代码位置是
vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/deviceinfo/StorageSettings.java 调用的是
mStorageManager = context.getSystemService(StorageManager.class);
final List<VolumeInfo> volumes = mStorageManager.getVolumes();
final File path = vol.getPath();
privateUsedBytes += (volumeTotalBytes - path.getFreeSpace());
也就是调用了File 的 getFreeSp加粗样式ace() 方法。

图2的代码位置是
vendor/mediatek/proprietary/packages/apps/MtkSettings/src/com/android/settings/deviceinfo/StorageDashboardFragment.java 调用的是

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值