В течение довольно долгого времени я был блаженно убежден, что статические переменные [экземпляра] существуют, пока приложение работает. однако, к моему ужасу и большой тревоге, я чувствую, что это неправда.
для простого тестирования я создал статический список строк, и в моем основном классе activity
переопределил метод onDestroy
, чтобы напечатать сообщение, чтобы убедиться, что приложение закрыто. в методе onCreate
я просто добавил новый string
и распечатал содержимое списка. я обнаружил, что размер списка продолжает увеличиваться, и все ранее добавленные строковые значения все еще присутствуют.
Я читал местами [даже здесь, в SO], что переменные экземпляра существуют столько, сколько существует приложение, но я боюсь, что это не совсем так.
Если быть более точным, я осознал эту проблему при использовании Facebook SDK для Android. Я видел, что экземпляры AuthListener
в списке слушателей в классе SessionEvents
только продолжают увеличиваться с течением времени. Следовательно, всякий раз, когда приложение запускается и пользователь входит в систему с использованием FB, методы прослушивателя запускаются столько раз, сколько есть экземпляров, присутствующих в классе SessionEvents
.
Кто-то наблюдал это раньше, и есть ли какая-то кардинальная ошибка, которую я совершаю в понимании того, как работает Android?
что дает?
спасибо за чтение!
* * Тысяча двадцать-один [
UPDATE ]
Я стою исправлено
BalusC
и
rdineiu
. Я действительно не хотел создавать путаницу в отношении переменных экземпляра и класса. Увы, в спешке опубликовать вопрос я допустил ошибку, которую не хотел. Я очень хорошо знаю разницу между
static
и
instance
переменными. Я просто намеревался написать
class
переменных, и не могу понять, что произошло, чтобы ссылаться на статические переменные как
instance
переменные.
Однако мой вопрос остается в силе.
@ MisterSquonk - нет, я не путаю здесь, когда заканчивается мой Activity
и когда приложение уничтожается. Вот что я попробовал на примере - у меня есть только ОДИН Activity
, который служит Main
. Когда я нажимаю кнопку возврата из этого Activity
, я предполагаю, что Activity
удаляется из стека и , приложение также уничтожается. Я запустил диспетчер задач, чтобы убедиться, что мое приложение больше не работает.