Как стереть статические переменные в Android

Я прочитал эту статью на StackOverflow. В соответствии с этим статические переменные будут стерты, если

  1. класс выгружается
  2. JVM выключается
  3. процесс умирает

Но как уничтожить/убить мое приложение (процесс приложения) и так программно стереть все статические переменные из моего приложения?!

Спасибо,

Мур

UPD

Эти статические переменные будут заполнены чтением некоторых данных с сервера. Вот тестовый рабочий процесс:

  1. Я запускаю приложение -> статические переменные будут заполнены
  2. Я иду к домашней активности, нажимая кнопку «Назад» -> будет вызываться «finish()»
  3. Я отключаю интернет-соединение (уверен, что соединения нет)
  4. Затем я запускаю приложение снова
  5. Статические переменные все еще заполнены

Некоторые идеи?

Есть ли возможность закрыть все действия приложения? Будет ли приложение «закрытым» в этом случае?

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


person Tima    schedule 20.10.2010    source источник
comment
В чем проблема с этими статическими переменными? Они занимают огромное количество данных? Вы хотите проверить, стерты ли переменные?   -  person Janusz    schedule 20.10.2010
comment
проблема в том, что они должны быть сброшены, но они не будут или я делаю что-то не так :(   -  person Tima    schedule 20.10.2010


Ответы (2)


Как насчет установки статической переменной в null?

person Zsombor Erdődy-Nagy    schedule 20.10.2010
comment
я пытался это сделать, но они (статические переменные) все еще там, пока я не убью процесс приложения в ddms - person Tima; 20.10.2010
comment
Я уверен, что в этом случае есть способ вручную вызвать сборщик мусора. Никогда не пытался это сделать, но решение должно быть где-то там. - person Zsombor Erdődy-Nagy; 20.10.2010

Ваш вопрос не совсем ясен, поэтому я дам вам два варианта:

A
Если вы хотите завершить свое приложение программным путем, вы можете вызвать finish() в любом месте вашего кода.

B
Если вы просто хотите закрыть свое приложение "вручную" на своем устройстве, выполните следующие действия:

  • Нажмите Меню.
  • Нажмите Настройки.
  • Нажмите Приложения.
  • Нажмите Управление приложениями.
  • Найдите свое приложение в списке, выберите его и нажмите Принудительно остановить.

Редактировать:
Думаю, есть и третий вариант, но его, возможно, придется сделать вместе с вызовом finish(), чтобы убедиться, что это произойдет:

В своей деятельности вы также можете переопределить onDestroy() метод. Внутри вашей реализации onDestroy() вы можете сделать любую очистку, которая вам нужна, например, сбросить ваши статические переменные (например, на null).

person Julian    schedule 20.10.2010
comment
да, тоже об этом подумал... это не красиво, но это как минимум решение - person Tima; 20.10.2010
comment
@Mur: намерение onDestroy() состоит в том, что вы должны использовать это как место для очистки, когда ваше приложение закрывается, например, очистка переменных, ссылок и т. д. Это соответствует жизненному циклу активности, поэтому как таковое это не становится намного лучше, чем это. Кроме того, что делает это неприятным, так это не использование onDestroy(), а скорее странное использование статических переменных в вашем приложении. Поэтому я предлагаю либо пойти на это, либо посмотреть, сможете ли вы изменить дизайн своего приложения;) - person Julian; 20.10.2010
comment
Приложение будет переработано, но не сейчас. теперь должно работать и нет времени на эксперименты :( - person Tima; 20.10.2010