Как я могу программно проверить объем памяти, доступной моей программе 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 и ограничиваюсь некоторой произвольной частью этого значения. Это решение работает, и все было бы хорошо, но я чувствую, что должен быть лучший вариант для определения жесткого ограничения объема памяти, выделяемой моему приложению.

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