2

私はAndroidプログラミングを学んでいますが、すべてのアクティビティライフサイクルメソッドには、最初に実装されたスーパークラスがあることに気付きました.

Android のドキュメントには、ライフサイクル メソッドに関して、「これらのライフサイクル メソッドの実装は、作業を行う前に常にスーパークラスの実装を呼び出す必要があります」と記載されています。

私が興味を持っているのは、なぜこれが必要なのか、これらのスーパークラスが正確に何をするのかということです.

4

2 に答える 2

4

Activityのソースコードを見ることができます。

たとえば、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()ます。

なぜそれが必要なのですか?onCreate()メソッドはアクティビティのライフサイクルに不可欠な操作を実行するため、これは Android プラットフォームの要件です。

于 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 に答える