【问题标题】:What do superclass implementation of activity lifecycle in android do?android中活动生命周期的超类实现是做什么的?
【发布时间】:2013-04-19 09:21:55
【问题描述】:

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

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

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

【问题讨论】:

    标签: java android android-activity superclass super


    【解决方案1】:

    你可以看看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 生命周期的基本操作。

    【讨论】:

    • 从上面的代码你明白了什么? OP想要描述而不是源代码
    • 抱歉,上面的源代码写得很好,你可以很好地看到发生了什么——或者你不这么认为?基本上,它会检查动作中是否应该有一个主页按钮,是否有任何要恢复的片段以及其他一些初始内容。
    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-01
      • 2013-01-13
      • 2011-12-18
      • 1970-01-01
      • 2014-09-26
      • 1970-01-01
      • 2012-01-20
      • 2015-05-12
      相关资源
      最近更新 更多