В моем коде есть ошибка, которая заставляет меня думать, что я не полностью понимаю жизненный цикл Android.Да, я прочитал все документы и посмотрел на диаграммы, но они, кажется, говорят только о том, когда сохранять данные, когда действие может потерять фокус или быть убитым.Тем не менее, мой вопрос: если мне не нужно сохранять состояние, что происходит с переменными и их сохраненными значениями?Я ожидал, что они будут уничтожены, но ошибка в моем коде, похоже, указывает на иное.
В моем случае вот что произошло.У меня есть действие, которое запускает пользовательское представление (без xml, я просто рисую растровые изображения на экране в моем пользовательском представлении).Единственная переменная, которую я сейчас имею в своей деятельности, это просто переменная для моего вида: GameView gameView;
Теперь, на мой взгляд, я объявляю несколько растровых изображений, простые переменные int и float для работы с событиями рисования и касанияУ меня есть один массив объектов, которые содержат небольшие растровые изображения, координаты каждого объекта и несколько других вещей.Одна из переменных в моем классе для этого объекта - это статическая переменная, которая представляет текущий счетчик количества их объектов.Я сделал это таким образом, поэтому создание экземпляров объектов заставляет его отслеживать, каковы объекты человека, вместо отслеживания этого вне класса объекта.
Я ожидал, что статическая переменная останется одним и тем же значением для всех объектов, но я также ожидал, что эта переменная будет уничтожена вместе со всеми другими переменными и объектами этого представления Activity после вызова onDestroyed для этого действия.Однако этого не происходит.Когда это действие запускается снова, эта статическая переменная по-прежнему содержит предыдущее значение после последнего запуска - даже если был вызван onDestroyed.
Теперь мой вопрос НЕ в том, как это исправить (я могу написать код по-другому, чтобы исправить эту ошибку), но я хотел бы понять, почему это происходит с этой статической переменной, поскольку она не глобальна для всей системы.приложение, оно существует только внутри этого вида деятельности?Кроме того, это заставляет меня задуматься об остальных переменных в этом представлении - они уничтожены и их память освобождена или, по крайней мере, их значения больше не доступны при следующем вызове операции, или мне нужно сделать это самостоятельно - даже если яне нужно было сохранять эти данные о состоянии?
Спасибо за понимание этого вопроса.