Я проверил доступное хранилище для моего приложения, которое использует локальное частное хранилище.Независимо от того, какой метод я называю, он не показывает то, что показывает файловый браузер Android или Windows.
Вот мой код:
public static long getAvailableMemory()
{
Log.i(TAG, "getAvailableMemory: start");
long bytesAvailable = 0;
try
{
StatFs stat;
// Root
stat = new StatFs(Environment.getRootDirectory().getAbsolutePath());
bytesAvailable = stat.getAvailableBytes();
Log.d(TAG, "Root.Absolute.AvailableBytes = " + bytesAvailable);
bytesAvailable = stat.getFreeBytes();
Log.d(TAG, "Root.Absolute.FreeBytes = " + bytesAvailable);
// Data
stat = new StatFs(Environment.getDataDirectory().getAbsolutePath());
bytesAvailable = stat.getAvailableBytes();
Log.d(TAG, "Data.Absolute.AvailableBytes = " + bytesAvailable);
bytesAvailable = stat.getFreeBytes();
Log.d(TAG, "Data.Absolute.FreeBytes = " + bytesAvailable);
// External
stat = new StatFs(Environment.getExternalStorageDirectory().getAbsolutePath());
bytesAvailable = stat.getAvailableBytes();
Log.d(TAG, "External.Absolute.AvailableBytes = " + bytesAvailable);
bytesAvailable = stat.getFreeBytes();
Log.d(TAG, "External.Absolute.FreeBytes = " + bytesAvailable);
// Local
File file = new File(Settings.pathToThumbnails);
bytesAvailable = file.getUsableSpace();
Log.d(TAG, "File.UsableSpace = " + bytesAvailable);
}
catch (Exception e)
{
e.printStackTrace();
}
// Log.d(TAG, "getAvailableMemory: bytesAvailable = " + bytesAvailable);
return bytesAvailable;
}
Файловый браузер Android: 1.65GB
Файловый браузер Windows: 1 745 756 160 (1,62)
Запуск приложения, Журнал:
12-24 08:06:58.966 11835-11835 D/*~MAIN ACTIVITY: Root.Absolute.AvailableBytes = 209154048
12-24 08:06:58.966 11835-11835 D/*~MAIN ACTIVITY: Root.Absolute.FreeBytes = 209154048
12-24 08:06:58.966 11835-11835 D/*~MAIN ACTIVITY: Data.Absolute.AvailableBytes = 1769209856
12-24 08:06:58.966 11835-11835 D/*~MAIN ACTIVITY: Data.Absolute.FreeBytes = 1774452736
12-24 08:06:58.966 11835-11835 D/*~MAIN ACTIVITY: External.Absolute.AvailableBytes = 1748234240
12-24 08:06:58.966 11835-11835 D/*~MAIN ACTIVITY: External.Absolute.FreeBytes = 1748234240
12-24 08:06:58.966 11835-11835 D/*~MAIN ACTIVITY: File.UsableSpace = 1769205760
Я не уверен, какую именно цифру использовать для тестирования моего приложения.Я не знаю, откуда берутся 1,65 ГБ, которые сообщает Android.Я просто хочу узнать, сколько свободного места осталось для моего приложения, чтобы сохранить миниатюры в локальном хранилище.