Разница между кодом до и после super ()

Посмотрите примеры кода ниже

@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() .

Но еще раз. Весь этот код выполняется в потоке пользовательского интерфейса, поэтому порядок вашего кода не имеет большого смысла, исключая некоторые редкие случаи. Но лучшая идея – прочитать исходный код и понять, как он работает и что на самом деле происходит.