2013-04-25 3 views
1

Я изучаю программирование на Android, и я заметил, что все методы жизненного цикла активности имеют суперкласс, который реализуется в начале.Что такое реализация суперкласса жизненного цикла активности в android?

В документации на Android также говорится: «Ваша реализация этих методов жизненного цикла должна всегда вызывать реализацию суперкласса перед выполнением любой работы» в отношении методов жизненного цикла.

Что мне интересно, почему это необходимо и что именно делают эти суперкласс?

ответ

3

Вы можете посмотреть 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 с Somthing как:

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

Вы на самом деле назвать вышеупомянутый метод, вызвав super.onCreate().

Зачем это требуется? Это требование платформы Android, так как метод onCreate() выполняет важные операции для жизненного цикла деятельности.

+3

Что вы поняли из приведенного выше кода? OP хотите описание не исходного кода – Pragnani

+0

извините, но исходный код написан написан достаточно хорошо, что вы можете хорошо видеть, что происходит - или вы так не думаете? в основном он проверяет, должна ли быть кнопка дома в действии голая, любые фрагменты для восстановления и некоторые другие исходные вещи. –

0

Если ваш класс расширяет любой другой класс, и у вас есть методы, которые реализуют методы из этого расширенного класса. Но вы не хотите выполнять всю реализацию самостоятельно. Вы вызываете super.your_Method_That_Has_Implementation_In_Extented_Class();

В нем говорится: в этот момент выполните то, что находится в реализации myMethod в классе, из которого я расширяю свой класс.

Вы также можете увидеть этот учебник о том, что: http://docs.oracle.com/javase/tutorial/java/IandI/super.html