Почему Super.ondestroy () в Java Android идет сверху в деструкторах? [Дубликат
Вопрос
Этот вопрос уже имеет ответ здесь:
Согласно какой логике делает super.onDestroy();
В деструкторах идет сверху? Например:
protected void onDestroy() {
super.onDestroy();
releaseMediaPlayer();
}
и не:
protected void onDestroy() {
releaseMediaPlayer();
super.onDestroy();
}
Как в C ++, OBJ-C, Pascal и т. Д.?
Решение
Это действительно зависит от того, что вы хотите сделать в вашем onDestroy
. Отказ Это то, что Super.ondestroy (в таком порядке):
- Уволить любые диалоги, которым управляется деятельность.
- Закрыть любые курсоры деятельности управлялось.
- Закрыть любой открытый диалог поиска
Если логика вы поместите внутри onDestroy
Есть что-то связанное с этими тремя вещами, которые Android, то вам, возможно, придется беспокоиться о заказе. В противном случае, и в большинстве случаев это не имеет значения.
Другие советы
В Threadsample.zip на Сообщение о подготовке статуса работы, в OnDestroy есть комментарий ()
public void onDestroy() {
...
// Must always call the super method at the end.
super.onDestroy();
}
Так что, возможно, при использовании широковещательных приемников, супер должен идти в конце.
Поскольку мы продлеваемся от базовых классов Android, всегда есть хороший подход к тому, чтобы получить родительский класс создавать и инициализировать себя в первую очередь во время создания и сначала добиваться ребенка и освободить ресурс во время отключения / остановки компонентов. Это рекомендуемый подход для последования. Однако это полностью зависит от случаев использования и сценариев.
public void onCreate(Bundle bundle){
super.onCreate(bundle);
//perform child class initializations.
}
public void onDestroy(){
//perform uninitialization and free resource
super.onDestroy();
}
Каков твой вопрос? Вы можете сделать это в любом случае, это зависит, если вы хотите, чтобы ваш суперкласс onDestroy()
называется перед вашим. Обычно я не думаю, что это имеет значение в Android.
Также,onDestroy()
не деструктор. Это на самом деле не разрушает объект. Это просто метод, который называется на основе определенного состояния. Таким образом, ваш экземпляр все еще жив и очень хорошо * после суперкласса onDestroy()
бежит и возвращает.
* Скорее всего, Android свободен убивать активность в любое время, но вы можете предположить, что это все еще там.