Intereting Posts
NoSuchFieldError на findViewById () ClassCastException: android.support.v7.widget.LinearLayoutCompat $ LayoutParams нельзя отбрасывать в android.widget.LinearLayout $ LayoutParams Устройства Samsung не закрывают ящик приложения после трансляции CLOSE_SYSTEM_DIALOGS Патч для перехвата Android \ copy \ cut на editText Использование Html.fromHtml для установки пользовательского шрифта Как получить доступ к новому API Gmail из моего приложения для Android? Изменение размера IMAGEVIEW по андроиду масштаба изображения Как я могу очистить значение TextView? Как я могу скопировать содержимое данных / в SDCard / без использования adb? Временное отключение или изменение SELinux на Android GridView.setItemChecked (позиция, значение) Что такое хорошая свободная / открытая платформа для разработки мобильных приложений с кросс-платформой Datepicker: как всплывать datepicker при нажатии на кнопку и хранить значение в переменной Установление паритета с помощью метода управления передачей Robolectric, проблемы с элементами списка кликов

Почему super.onDestroy () в java – Android идет вверх в деструкторах?

Я новичок в разработке java! Может кто-нибудь мне скажет … согласно которой логика super.onDestroy(); В деструкторах идет сверху? например:

 protected void onDestroy() { super.onDestroy(); releaseMediaPlayer(); } 

и не

 protected void onDestroy() { releaseMediaPlayer(); super.onDestroy(); } 

Как c ++, obj-c, pascal и т. Д.?

Solutions Collecting From Web of "Почему super.onDestroy () в java – Android идет вверх в деструкторах?"

Это действительно зависит от того, что вы хотите сделать в своем onDestroy . Это то, что делает super.onDestroy (в этом порядке):

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

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

В ThreadSample.zip по обучению статусу Reporting Work Status есть комментарий в onDestroy ()

 public void onDestroy() { ... // Must always call the super method at the end. super.onDestroy(); } 

Поэтому, возможно, при использовании широковещательных приемников супер должен идти в конце.

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

Кроме того, onDestroy() не является деструктором. Это фактически не уничтожает объект. Это просто метод, который называется на основе определенного состояния. Таким образом, ваш экземпляр все еще жив и очень хорошо * после onDestroy() и возврата суперкласса onDestroy() .

* Скорее всего, андроид может убить всю деятельность в любое время, но вы можете предположить, что она все еще там.

Поскольку мы расширяемся от базовых классов андроида, это всегда хороший подход, позволяющий родительскому классу создавать и инициализировать себя во время создания и позволять потомку инициализировать и освобождать ресурс во время остановки / остановки компонентов. Это рекомендуемый подход. Однако это полностью зависит от вариантов использования и сценариев.

 public void onCreate(Bundle bundle){ super.onCreate(bundle); //perform child class initializations. } public void onDestroy(){ //perform uninitialization and free resource super.onDestroy(); }