我想更新并向用户显示我的设备的可用空间,我尝试了很多方法但没有任何效果,我使用的每个方法似乎只在应用程序启动时显示一次内存,但是比这些方法的每次调用都打印了相同的价值,没有更新 目前我正在使用这种方法
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));
}
我只是想检测一下,当没有可用的免费存储空间时,我正在使用BroadCastReceiver,但是一台设备(三星s4 os 4.4.2)没有启动内存低事件
答案 0 :(得分:2)
getRootDirectory()
的内容不太可能改变,因为该分区是只读的。
如果要监控可用空间,则必须在分区上选择一个对您而言重要的文件,例如getFilesDir()
以查找internal storage上的可用空间。
答案 1 :(得分:-1)
您可以使用以下行:
getApplicationContext().getExternalFilesDir(null)