2017-06-01 125 views
1

我想更新并向用户显示我的设备可用空间,我尝试了很多方法,但都没有成功,我使用的每种方法似乎都只在应用程序启动时显示一次内存,但比这些方法每次调用打印相同的值,没有更新 我目前使用这种方法如何以编程方式监视android设备可用空间

public long getfreeMemory() { 
    StatFs statFs = new StatFs(Environment.getRootDirectory().getAbsolutePath()); 
    return (long) (statFs.getAvailableBlocks() * statFs.getBlockSize()); 
} 

public void checkAppMemory() { 
    Log.e("MEMORY", getfreeMemory() + ""); 
    memoryHandler_.postDelayed(new Runnable() { 
     public void run() { 
      checkAppMemory(); 
     } 
    }, (int) (CHECK_MEMORY_FREQ_SECONDS * 1000)); 
} 

我只是想检测,如果没有可用的免费存储空间,我用广播接收器,但一台设备(三星s4 os 4.4.2)不发射内存低电量事件

回答

2

的内容210不太可能改变,因为该分区是只读的。

如果要监视可用空间,则必须选择对您很重要的分区上的文件,例如getFilesDir()以查找internal storage上的可用空间。

+0

如果我要监控SD卡存储? –

+0

@JemoMgebrishvili:如果用“sdcard storage”表示[external storage](https://commonsware.com/blog/2014/04/08/storage-situation-external-storage.html),则使用'getExternalFilesDir() '。如果通过“sdcard storage”,您的意思是[可移动存储](https://commonsware.com/blog/2014/04/09/storage-situation-removable-storage.html),请查看getExternalFilesDirs()是否返回2 +项目,如果它使用第二个和后续的项目。 – CommonsWare

+0

是的,可移动存储我试图使用getExternalFilesDir(null).getAbsolutePath(),而不是更新 –

-1

您可以使用此行:

getApplicationContext().getExternalFilesDir(null) 
相关问题