Android-новичок: onDestroy

Должен ли я размещать команды до или после super.onDestroy () при перезаписывании активности ondestroy?

protected void onDestroy() { //option 1: callback before or ... super.onDestroy(); //option 2: callback after super.onDestroy(); } 

(Теперь я боюсь: если super.onDestroy слишком быстр, он никогда не появится в варианте 2.)

Это то, что происходит, когда вы вызываете super.onDestroy ();

Android-источник

 protected void onDestroy() { mCalled = true; // dismiss any dialogs we are managing. if (mManagedDialogs != null) { final int numDialogs = mManagedDialogs.size(); for (int i = 0; i < numDialogs; i++) { final Dialog dialog = mManagedDialogs.valueAt(i); if (dialog.isShowing()) { dialog.dismiss(); } } } // also dismiss search dialog if showing // TODO more generic than just this manager SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE); searchManager.stopSearch(); // close any cursors we are managing. int numCursors = mManagedCursors.size(); for (int i = 0; i < numCursors; i++) { ManagedCursor c = mManagedCursors.get(i); if (c != null) { c.mCursor.close(); } } } 

По сути, это означает, что не имеет значения, звоните ли вы до или после вашего кода.

Все, что может быть связано с использованием ресурсов активности, должно быть до вызова super.onDestroy() . Код после этого будет достигнут, но может вызвать проблемы, если ему нужны эти ресурсы.

Поместите свой код после super.onDestroy(); например:

 protected void onDestroy() { super.onDestroy(); // Put code here. } 

Ваш код завершит выполнение при переопределении метода.

Вызов super.onDestroy не будет прерывать вызывающий поток или что-то вроде этого. Ваш код будет выполнен независимо от того, где вы его разместите, до или после super.onDestroy.

Super.onDestroy будет освобождать только ресурсы, на которые можно ссылаться для этого действия по структуре (например, системные диалоги и управляемые курсоры)

Я предлагаю вам проверить эту ссылку для получения более подробной информации

http://developer.android.com/reference/android/app/Activity.html#onDestroy ()

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

Он поступит в вариант 2. onDestroy () фактически не уничтожает объект. Ваш экземпляр все еще жив после запуска и возврата суперкласса onDestroy ().

Изменить: это то, что делает onDestroy в порядке:

  • Отключите любые диалоги, которыми управляет деятельность.
  • Закройте все курсоры, которыми управляет деятельность.
  • Закрыть любое диалоговое окно открытого поиска