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;

       }}


阅读更多
换一批

没有更多推荐了,返回首页