Вопрос

Я создаю собственный класс приложений.

Я стараюсь отладить его, и код останавливается на Application.oncreate (), но не останавливается в Onlowmemory.

Чтобы проверить сценарий, я открываю множество других приложений с высокой памятью.

Я вижу, что сеанс отладки завершился (в затмении) и некоторые из моих статических переменных, превращенных в NULL - указывает на прекращение процесса.

Мало того, что отладка не остановила точку останова метода, я поместил строку log.e (...) и не вижу ее.

Есть идеи о том, почему метод не был вызван?

Спасибо.

Это было полезно?

Решение

Я не думаю, что есть какие -либо гарантии, что этот метод когда -либо будет вызван.

От док:

Хотя точная точка, в которой это будет вызвано, не определяется, как правило, это произойдет в то время, когда весь фоновый процесс был убит, то есть до того, как достигнет точки убийства процессов хостинга и пользовательского интерфейса переднего плана, которые мы хотели бы избежать убийства.

Поскольку точка, в которой он называется, не определяется, он может никогда не назвать это.

В целом, Android может убить ваше приложение, когда захочет, если оно находится на заднем плане. Вы должны полагаться только на методы в жизненном цикле (например, Onpause, Onstop, Ondestroy), в которых конкретно указывается, что они гарантированно будут вызваны для выполнения необходимой очистки.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top