Android 获取SD卡无发及时更新存储信息

问题:应用中有一个下载模块,下了一个判断SD卡剩余空间的方法,发现下载完成一个应用后,再下载其他应用的时返回的SD卡剩余空间的值没变。


定位原因:StatFsstatFs = new StatFs(file.getPath());只创建了一次。


解决办法:每次判断空间的时候都要新new一下。获取最新的存储信息。


及时获取SD卡剩余空间的方法:


   /**

    * sd卡剩余了空间

    *

    * @return 大小,M为单位

    */

    static public long getAvailableSDSize() {

        String sdcard = Environment.getExternalStorageState();

        String state = Environment.MEDIA_MOUNTED;

       if (sdcard.equals(state)) {

            File path =Environment.getExternalStorageDirectory();

           StatFs stat = new StatFs(path.getPath());//在这里去new一个状态值,每次使用的时候都newy一个新的状态值这样才会保证,随时能监听到剩余空间的大小改变。

           long blockSize = stat.getBlockSize();

           //获取可用区块数量

           long availableBlocks =stat.getAvailableBlocks();

           long totalSDSizeUser = availableBlocks * blockSize / 1024 / 1024;

           //Log.d("lgp", "getAvailableSDSize: " + path +":" + totalSDSizeUser + ":" + blockSize);

           return totalSDSizeUser;

       } else {

           return -1;

       }}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

七彩麻雀

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值