Intereting Posts

Активность OnDestroy никогда не называлась?

Я использую следующий код в своем ListActivity

// a separate class in project public class MyActivity extends ListActivity { // some common functions here.. } public class SelectLocation extends MyListActivity { public void onCreate(Bundle savedInstance) { // here..... } @Override protected void onDestroy() { super.onDestroy(); if (adap != null) adap = null; if (list != null) list = null; System.gc(); } } 

onDestroy мне, почему метод onDestroy не вызывается в моем коде?

onDestroy() вызывается только тогда, когда система имеет мало ресурсов (память, время процессора и т. Д.) И принимает решение убить вашу активность / приложение или когда кто-то вызывает finish() в вашей активности.

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

Подробнее читайте здесь .

Кроме того, я считаю, что вам не нужно вызывать все это в onDestroy() пока адаптация не станет критическим ресурсом. И даже в этом случае система андроидов имеет механизмы для их правильного размещения.

Нет никакой гарантии, что ваш метод onDestroy будет вызван вообще.

Код, который вы используете в методе onDestroy, вообще не нужен. Если уничтожить называется ваша активность будет удалена из стека и бесплатно для сбора мусора в любом случае со всеми ресурсами в нем, на которые ссылается только действие. Также System.gc () должен быть плохим. В Android система почти всегда знает, когда самое лучшее время для сбора мусора. В большинстве случаев деятельность по сбору мусора запускается автоматически. Просто удалите весь метод onDestroy. Если у вас проблемы с общей памятью вашего приложения, проблема в другом месте.

В большинстве телефонов при нажатии кнопки «Назад» вызываются дважды методы onStop () и onDestroy (), но если это не ваш случай, вы можете создать кнопку для вызова финиша (); метод.