Android系统Storage total算法

StorageSize获取代码逻辑:

FileUtils.roundStorageSize(Environment.getDataDirectory().getTotalSpace() + Environment.getRootDirectory().getTotalSpace())

其中:
getDateDirectort().getTotalSpace(): 获取userdata总大小
getRootDirectory().getTotalSpace()):获取跟文件系统大小
具体size可以在设备启动后在adb shell中通过df -h获取查看:

console:/ # df -h
Filesystem       Size Used Avail Use% Mounted on
tmpfs            1.7G 1.7M  1.7G   1% /dev
tmpfs            1.7G    0  1.7G   0% /mnt
/dev/block/sda11  11M 164K   11M   2% /metadata
/dev/block/dm-4  931M 929M  2.8M 100% /
/dev/block/dm-5  795M 793M  2.4M 100% /system_ext
/dev/block/dm-6  599M 598M  1.8M 100% /vendor
/dev/block/dm-7  298M 297M  916K 100% /product
tmpfs            1.7G 4.0K  1.7G   1% /apex
tmpfs            1.7G 132K  1.7G   1% /linkerconfig
/dev/block/loop0  42M  42M   32K 100% /apex/com.android.vndk.v34@1
/dev/block/loop1 108M 108M   28K 100% /apex/com.android.vndk.v30@1
/dev/block/loop4  38M  38M   32K 100% /apex/com.android.i18n@1
/dev/block/loop2  10M  10M   40K 100% /apex/com.android.runtime@1
/dev/block/loop3 764K 736K   28K  97% /apex/com.android.tzdata@340090000
/dev/block/sda2   27M 1.0M   26M   4% /mnt/vendor/persist
/dev/block/sde4  180M  94M   85M  53% /vendor/firmware_mnt
/dev/block/sde9   27M  15M   13M  55% /vendor/dsp
/dev/block/sde5   64M 944K   63M   2% /vendor/bt_firmware
/dev/block/dm-43  41G 1.2G   40G   4% /data
tmpfs            1.7G    0  1.7G   0% /data_mirror

可以看到userdata=41GB,跟文件系统931MB。总和41.9GB。
FileUtils.roundStorageSize接口是针对结果做一次2次幂取整的操作,具体代码逻辑如下:

public static long roundStorageSize(long size) {                                                               
    long val = 1;
    long kiloPow = 1;
    long kibiPow = 1;
    while ((val * kibiPow) < size) {
        val <<= 1;
        if (val > 512) {
            val = 1;
            kibiPow *= 1024;
            kiloPow *= 1000;
        }
    }
    return val * kiloPow;
}

综合41.9GB通过计算之后的结果就是64GB,所以Android Steetings的Storage total size就会显示64GB

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值