Application.onlowmemory () не Invlokeded
-
26-10-2019 - |
Вопрос
Я создаю собственный класс приложений.
Я стараюсь отладить его, и код останавливается на Application.oncreate (), но не останавливается в Onlowmemory.
Чтобы проверить сценарий, я открываю множество других приложений с высокой памятью.
Я вижу, что сеанс отладки завершился (в затмении) и некоторые из моих статических переменных, превращенных в NULL - указывает на прекращение процесса.
Мало того, что отладка не остановила точку останова метода, я поместил строку log.e (...) и не вижу ее.
Есть идеи о том, почему метод не был вызван?
Спасибо.
Решение
Я не думаю, что есть какие -либо гарантии, что этот метод когда -либо будет вызван.
От док:
Хотя точная точка, в которой это будет вызвано, не определяется, как правило, это произойдет в то время, когда весь фоновый процесс был убит, то есть до того, как достигнет точки убийства процессов хостинга и пользовательского интерфейса переднего плана, которые мы хотели бы избежать убийства.
Поскольку точка, в которой он называется, не определяется, он может никогда не назвать это.
В целом, Android может убить ваше приложение, когда захочет, если оно находится на заднем плане. Вы должны полагаться только на методы в жизненном цикле (например, Onpause, Onstop, Ondestroy), в которых конкретно указывается, что они гарантированно будут вызваны для выполнения необходимой очистки.