Мое приложение - фоновый сервис, работающий на переднем плане. В ситуациях с низкой памятью некоторые из моих потоков обработки убиваются без перезапуска приложения. Это вызывает очень странное поведение. Я хотел бы получить предупреждение от ОС, когда память будет низкой, пока мой процесс не будет убит. Это позволит мне освободить память или перезапустить мое приложение. Кажется, я не могу найти трансляцию или уведомление для этой ситуации.
Получите это транслируемое намерение в своем приемнике и обработайте приложение.
Предлагаю вам прочитать "Управление памятью приложений" здесь: https://developer.android.com/training/articles/memory.html. Метод обратного вызова системы onTrimMemory сообщит вам о различных сценариях использования ОЗУ, как указано значением аргумента метода. Подробнее см. Https://developer.android.com/reference/android/content/ComponentCallbacks2.html#onTrimMemory (int). Это описание метода говорит:
Вызывается, когда операционная система определила, что это хорошее время для процесса обрезания ненужной памяти из ее процесса. Это произойдет, например, когда он идет в фоновом режиме, и недостаточно памяти для сохранения как можно большего количества фоновых процессов. Вы не должны сравнивать с точными значениями уровня, так как могут добавляться новые промежуточные значения - вам обычно нужно сравнивать, если значение больше или равно интересующему вас уровню.
Чтобы получить текущий уровень обрезки процессов в любой момент, вы можете использовать ActivityManager.getMyMemoryState(RunningAppProcessInfo).
Например, TRIM_MEMORY_COMPLETE в качестве аргумента для onTrimMemory:
public static final int TRIM_MEMORY_COMPLETE Уровень для onTrimMemory (int): процесс близится к концу списка LRU в фоновом режиме, и если больше памяти не будет найдено вскоре, оно будет убито. Постоянное значение: 80 (0x00000050)