Как я могу программно проверить объем памяти, доступной моей программе Android в Котлине?Android

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как я могу программно проверить объем памяти, доступной моей программе Android в Котлине?

Сообщение Anonymous »

Часть моего приложения включает в себя преобразование страниц PDF-файла в растровые изображения, а возможно, и десятков или сотен страниц. Поскольку размер растрового изображения размером около 16 МБ, я добавляю буфер, чтобы загружать только определенное количество страниц вокруг отображаемой в данный момент страницы, чтобы предотвратить любые ошибки OOM.
Теперь я нахожусь на той стадии, когда мое приложение достаточно стабильно, и я мог бы вернуться и иметь более надежное решение, динамически определяющее этот буфер на основе доступной памяти. Сначала я думал, что смогу это сделать во время выполнения:

Код: Выделить всё

    val runtime = Runtime.getRuntime()
val availableHeap = runtime.maxMemory() - (runtime.totalMemory() - runtime.freeMemory())
Однако все эти числа оставались фактически постоянными (+/- мегабайт), даже когда я загружал сотни мегабайт растровых изображений. Другой вариант, о котором я читал, - это Debug.getNativeHeapAllocatedSize() и соответствующий getNativeHeapFreeSize(), и хотя выделенный размер собственной кучи увеличивался вместе с растровыми изображениями, свободный размер оставался постоянным.
Насколько я могу судить, остается только ActivityManager.MemoryInfo.totalMem и ограничиваюсь некоторой произвольной частью этого значения. Это решение работает, и все было бы хорошо, но я чувствую, что должен быть лучший вариант для определения жесткого ограничения объема памяти, выделяемой моему приложению.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»