对超类方法的调用应该是第一个陈述吗?

语音识别的结果可以在onActivityResult(int requestCode, int resultCode, Intent data)方法中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); } 

Related of "对超类方法的调用应该是第一个陈述吗?"

您重写的方法是组件创build( onCreate()onStart()onResume()等)的一部分,您应该链接到超类作为第一个语句,以确保Android有机会在您之前完成工作试图做一些依靠已经完成的工作的事情。

你重载的方法是组件销毁的一部分( onPause()onStop()onDestroy()等),你应该先做你的工作,并链接到超类作为最后一件事。 这样,如果Android清理了一些你的工作所依赖的东西,那么你将首先完成你的工作。

返回非voidonCreateOptionsMenu()等),有时你会链接到return语句中的超类,假设你没有专门做某些事情需要强制一个特定的返回值。

其他的一切 – 比如onActivityResult() – 总的来说取决于你。 我倾向于作为第一件事和超级类别联系在一起,但是除非遇到问题,否则后面的链接应该没问题。

因为在将控制权交给类层次结构之前,通常需要执行独立于您的重写活动的事件。 请注意,情况并非总是如此。 有时候,你应该先把这些调用放在你的应用被初始化时的callback函数中,而你最好把它们放在你的应用被销毁时发生的事件上,以便你可以先清理掉。

一般来说,虽然没关系,如果这样做,它会在SDK中提到 – 我碰到它在SKD中提到了几个地方(我认为关于对话框的文档),但我不记得确切页面/部分。

这里有更详细的讨论: http : //groups.google.com/group/android-developers/browse_thread/thread/9ddb2b06c21c8457