Что именно уничтожает onDestroy ()?

Меня беспокоили эти «характеристики»: когда я нажимаю кнопку «Назад», чтобы покинуть приложение, я могу сказать, что 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++;
}

}

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

Я нашел полезный ответ на этом форуме, и я понимаю, что в приведенном выше коде mValue является членом класса, а не членом экземпляра. Но разве не правда, что в данном конкретном случае у меня есть только одно действие HelloAndroid, и поэтому, когда он умирает, все очищается, и в следующий раз, когда я вернусь, все начинается заново? (Или есть какая-то загадочная вещь в системе, которая все еще держится за него после onDestroy (), чтобы он просто не умер ???)

(Выше всего лишь переменная, что, если это куча ссылки на объекты? Каждая часть представляет собой отдельно повторно собираемую память. Есть ли шанс, что GC собирает некоторые из них, но не все или ничего? Это меня действительно беспокоит.)

29
задан Community 23 May 2017 в 11:45
поделиться