2013-10-27 151 views
0

我从来没有正确理解回调函数的概念。现在我正在学习java和android编程。我遇到过这种方法。为什么这种方法必须是回调方法

public void onCreate(Bundle savedInstanceState){ 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.layout_main); 
} 

从我的正常方法的理解,这种方法的实现里面,这种方法被自称,如此实施,将再次启动,它会再次调用自身,等等...这导致了无限循环调用并开始实施此方法。

有人可以给我推荐一些简单易用的文档/教程等,它解释了什么是回调方法,它们的执行流程是什么。

OR

有人能告诉我一个简单的方法这种方法的onCreate()执行的执行流程,为什么是调用本身所需的方法,并且此调用实际上做了什么。

请尽快回复,我会很感激,因为我的工作依赖于这个概念。

回答

3

不,它不会以无限循环结束,因为您调用超类super.onCreate()onCreate方法。

如果你打电话给this.onCreate()你也不会以无限循环结束。你会得到一个java.lang.StackOverflowError

回调方法由android运行时调用,并允许您挂接Activity的生命周期。

1

super.onCreate(savedInstanceState);

将在Activity类的onCreate方法执行代码(目前在Activity子类你,从而Activity是你的超级类)。您正在设置一些已经在此定义的基本功能。

这与回调无关。

+0

非常感谢您的回答。 – user2882662

1

它不称自己。它调用super.onCreate(),因此调用其超类的onCreate()方法。

1

调用`super.onCreate()'在当前类的超类中调用onCreate方法。如果X扩展了Y,那么在X中的一个方法中,super.onCreate()在Y中调用onCreate()。在Y中的onCreate()完成执行后,将继续执行X中super.onCreate()后的行。

回调方法是一个不同的问题。当你想要编写的代码被某种类型的框架(如Android)调用时,通常在发生某些事件时使用回调方法。在这种情况下,无论被引用的是什么被创建,它都会调用你的代码 - 这会让你的代码有机会做一些特定于你的应用程序的事情。通常很难知道什么时候会发生这种情况,特别是在像Android这样的GUI环境中,回调成为处理这种情况的常见方式。