这两个语句有什么区别?1.超类方法调用第一行2.超类方法调用最后一行

时间:2015-07-07 08:32:34

标签: android

这两个陈述之间有什么区别?

1.超级类方法调用第一行
2.super类方法正在调用最后一行

〔实施例:

@Override
protected void onStart() {
    super.onStart();
    FlurryAgent.onStartSession(this, AppConstants.FLURRY_API_KEY);
    RocqAnalytics.startScreen(this);
    AppEventsLogger.activateApp(this); 

}

@Override
protected void onStart() {
    FlurryAgent.onStartSession(this, AppConstants.FLURRY_API_KEY);
    RocqAnalytics.startScreen(this);
    AppEventsLogger.activateApp(this); 
    super.onStart();
}

1 个答案:

答案 0 :(得分:2)

  1. 通过将super.onStart()放在被覆盖函数的顶部,您可以告诉程序执行任何{/ 1}}代码来自超级 之前的任何代码代码运行。

  2. 通过将onStart()放在被覆盖函数的末尾,您可以告诉程序在之后的任何一个超类中执行任何super.onStart()代码代码运行。

  3. 这有点重要,因为即使是原始的onStart()也会在Activity中执行its own initialization的某些操作。例如,应用程序生命周期回调在onStart()中调用。因此,如果您想在应用程序收到您的活动已启动的通知之前执行某些操作,则必须在调用Activity.onStart()之前执行此操作。

    如果您想在框架有发言权之前或之后进行一些自己的初始化,那么您调用super.onStart()的操作顺序依赖于这一事实。根据经验,我总是首先初始化框架(即首先调用super.onStart()),除非有明确的理由不这样做。

    请注意,这是super.onStart()的另一种方式,因为框架onPause()可能会释放您自己清理所需的资源。

    因此,作为一般规则:首先初始化框架,最后清理框架。当然,这个规则现在或者之后需要被打破的原因有多种。