Должен ли вызов метода суперкласса быть первым утверждением?

Результаты распознавания речи можно прочитать в onActivityResult(int requestCode, int resultCode, Intent data) , как показано в этом примере . Этот метод переопределяет тот же метод в классе Activity : почему вызов метода суперкласса не является первым выражением?

 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == VOICE_RECOGNITION_REQUEST_CODE && resultCode == RESULT_OK) { // Fill the list view with the strings the recognizer thought it could have heard // ... } super.onActivityResult(requestCode, resultCode, data); } 

Solutions Collecting From Web of "Должен ли вызов метода суперкласса быть первым утверждением?"

Методы, которые вы переопределите, которые являются частью создания компонентов ( onCreate() , onStart() , onResume() и т. Д.), Вы должны onResume() суперкласс к первому утверждению, чтобы убедиться, что Android имеет возможность выполнить свою работу до вас Попытаться сделать что-то, что полагается на эту работу.

Методы, которые вы переопределите, которые являются частью уничтожения компонентов ( onPause() , onStop() , onDestroy() и т. Д.), Вы должны сначала выполнить свою работу и onDestroy() суперкласс в качестве последнего. Таким образом, если Android очистит то, от чего зависит ваша работа, вы сначала сделаете свою работу.

Методы, возвращающие нечто, отличное от void ( onCreateOptionsMenu() и т. Д.), Иногда вы onCreateOptionsMenu() с суперклассом в операторе return, предполагая, что вы специально не делаете то, что необходимо для принудительного получения определенного возвращаемого значения.

Все остальное – например, onActivityResult() – зависит от вас, в целом. Я, как правило, привязываюсь к суперклассу, но если вы не сталкиваетесь с проблемами, цепочка позже должна быть прекрасной.

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

В общем, хотя это не имеет значения, и если это произойдет, это будет упомянуто в SDK – я столкнулся с ним, упомянув несколько мест в SKD (я думаю, о документации по диалогам), но я точно не помню, какие Страница / раздел, в котором он включен.

Ниже приведено более подробное обсуждение этой темы: http://groups.google.com/group/android-developers/browse_thread/thread/9ddb2b06c21c8457