2017-06-01 115 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) 
相關問題