2

我一直在学习 android 编程,我注意到所有活动生命周期方法都有一个在开始时实现的超类。

Android 文档还说,“在执行任何工作之前,这些生命周期方法的实现必须始终调用超类实现”关于生命周期方法。

我很好奇的是为什么这是必要的,这些超类究竟做了什么?

4

2 回答 2

4

你可以看看Activity's source code

例如,onCreate()方法(第 879 行):

protected void onCreate(Bundle savedInstanceState) {
    if (DEBUG_LIFECYCLE) Slog.v(TAG, "onCreate " + this + ": " + savedInstanceState);
    if (mLastNonConfigurationInstances != null) {
        mAllLoaderManagers = mLastNonConfigurationInstances.loaders;
    }
    if (mActivityInfo.parentActivityName != null) {
        if (mActionBar == null) {
            mEnableDefaultActionBarUp = true;
        } else {
            mActionBar.setDefaultDisplayHomeAsUpEnabled(true);
        }
    }
    if (savedInstanceState != null) {
        Parcelable p = savedInstanceState.getParcelable(FRAGMENTS_TAG);
        mFragments.restoreAllState(p, mLastNonConfigurationInstances != null
                ? mLastNonConfigurationInstances.fragments : null);
    }
    mFragments.dispatchCreate();
    getApplication().dispatchActivityCreated(this, savedInstanceState);
    mCalled = true;
}

当您使用以下内容进行扩展Activity时:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    // Some stuff
}

您实际上通过调用来调用上述方法super.onCreate()

为什么需要它?这是 Android 平台的要求,因为该onCreate()方法执行 Activity 生命周期的基本操作。

于 2013-04-25T13:07:22.237 回答
0

如果您的类扩展了任何其他类,并且您有实现该扩展类的方法的方法。但是你不想自己做所有的实现。你打电话给 super.your_Method_That_Has_Implementation_In_Extented_Class();

它说:在这一刻,在我扩展我的类的类中执行 myMethod 的实现。

您还可以查看本教程:http: //docs.oracle.com/javase/tutorial/java/IandI/super.html

于 2013-04-25T13:17:41.500 回答