Android - должен ли onDestroy уничтожить действие, его переменные и освободить память

У меня есть ошибка в коде, из-за которой я решил, что я не совсем понимаю Жизненный цикл Android. Да, Я прочитал все документы и посмотрел на диаграммы, но они, кажется, говорят только о том, когда сохранять данные, когда действие может потерять фокус или быть убитым. Однако мой вопрос в том, что если мне не нужно сохранять состояние, что происходит с переменными и их сохраненными значениями? Я ожидал, что они будут уничтожены, но ошибка в моем коде, кажется, указывает на обратное.

В моем случае произошло вот что. У меня есть действие, которое запускает настраиваемое представление (без xml, я просто рисую растровые изображения на экране в своем настраиваемом представлении). Единственная переменная, которая у меня сейчас есть в моей деятельности, - это просто переменная для моего представления: GameView gameView;

Теперь в моем представлении я объявляю несколько растровых изображений, простые int и переменные с плавающей запятой для работы с рисованием и событиями касания, и у меня есть один массив объектов, содержащий небольшие растровые изображения, координаты каждого объекта и многое другое. Одна из переменных в моем классе для этого объекта - это статическая переменная, которая представляет текущий счетчик их количества. Я сделал это таким образом, поэтому создание экземпляров объектов заставляет его отслеживать, каковы их объекты, вместо того, чтобы отслеживать это за пределами класса объекта.

Я ожидал, что статическая переменная сохранит одно и то же значение для всех объектов, но я также ожидал, что эта переменная будет уничтожена вместе со всеми другими переменными и объектами представления этого действия после того, как для этого действия был вызван onDestroyed. Однако, похоже, этого не происходит. Когда это Activity запускается снова, эта статическая переменная по-прежнему содержит свое предыдущее значение из своего последнего запуска, даже если был вызван onDestroyed.

Теперь мой вопрос НЕ в том, как это исправить (я могу написать код по-другому, чтобы исправить эту ошибку), но я хотел бы понять, почему это происходит с этой статической переменной, поскольку она не глобальна для всего приложения, а существует только внутри этого представления Activity? Кроме того, это заставляет меня задуматься об остальных переменных в этом представлении - уничтожены ли они и освобождена их память или, по крайней мере, их значения больше не будут доступны при следующем вызове действия, или мне нужно сделать это самому, хотя я не нужно было сохранять какие-либо данные о состоянии?

Спасибо за понимание.

9
задан Mike 16 December 2010 в 15:31
поделиться