Меня это беспокоили: "Когда я использую кнопку" Назад ", чтобы оставить свое приложение, я могу сказать, что вызывается onDestroy(), но в следующий раз, когда я запустил приложение, все статические члены класса Activity прежнему сохраняют свои ценности. См. Код ниже:
public class HelloAndroid extends Activity {
private static int mValue; // a static member here
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TextView tv = new TextView(this);
tv.setText((mValue != 0) ?
("Left-over value = " + mValue) : "This is a new instance");
setContentView(tv);
}
public void onDestroy() {
super.onDestroy();
mValue++;
}
}
Приведенный выше код отображает значение left-over в mValue, и оно увеличивается, когда сеанс заканчивается, поэтому я точно знаю, что вызывается onDestroy().
Я нашел полезный ответ на этом форуме, и я понимаю, что в приведенном выше коде mValue является членом класса, а не членом экземпляра. Но не правда ли, что в этом конкретном случае у меня есть только одна активность HelloAndroid, и поэтому, когда он умирает, все очищается, и в следующий раз, когда я вернусь, все начнется снова? (Или, есть ли какая-то другая посторонняя вещь в системе, которая все еще держится за ней после onDestroy(), так что она просто не умрет?)
(Выше всего это переменная, что, если это куча ссылок objec? Каждая часть - это отдельная перезаряжаемая память. Есть ли вероятность того, что GC собирает некоторые из них, но не все или нет? меня беспокоит.)