Посмотрите примеры кода ниже
@Override protected void onPause() { ...some code here... super.onPause(); }
а также
@Override protected void onPause() { super.onPause(); ...some code here... }
Когда я спросил о различиях в коде, я не имел в виду о потоке исполнения, который является очевидным.
Итак, какова реальная разница между этими кодами? Когда рекомендуется использовать ваш код перед вызовом super()
, а когда использовать код после вызова super()
? Наверное, есть ситуации, когда это имеет значение.
Вы не должны размещать какой-либо из своих кодов до super.onPause()
, super.onPause()
этот метод позволяет системе делать то, что нужно для правильной приостановки приложения. Любой код, который вы хотите выполнить в onPause()
должен быть помещен после вызова super.onPause()
. Надеюсь это поможет.
Цитата из:
Примечание. Ваша реализация этих методов жизненного цикла должна всегда вызывать реализацию суперкласса перед выполнением любой работы, как показано в приведенных выше примерах.
Пришлось обмануть эту ссылку с нитью с одинаковым предметом:
Super.onResume () в начале или конце метода? Это имеет значение?
Обратите внимание на цитату из Dianne Hackborn
Да, это хороший образец. В большинстве случаев это, вероятно, не имеет значения, но это общее правило: во время любой инициализации пусть суперкласс выполняет свою работу первым; Во время любого вида финализации вы выполняете свою работу в первую очередь.
Я никогда не сталкивался с проблемами, вызывающими super
методы до моего кода, и я уверен, что не столкнулся бы с какими-либо проблемами, если бы я назвал super
методы после моего кода. Но обычно экземпляры суперклассов должны быть инициализированы до и деинициализированы после подклассов. Поэтому вы должны запустить свой код после вызова super
в onCreate()
, onStart()
, onRestart()
и onResume()
и раньше в onPause()
, onStop()
и onDestroy()
.
Но еще раз. Весь этот код выполняется в потоке пользовательского интерфейса, поэтому порядок вашего кода не имеет большого смысла, исключая некоторые редкие случаи. Но лучшая идея – прочитать исходный код и понять, как он работает и что на самом деле происходит.