2011-08-29 11 views

Odpowiedz

6

, czy zdecydujesz się nazwać super metoda zależy od tego, czy wymagają odziedziczony funkcjonalności. Często możesz dowiedzieć się, czy potrzebujesz wywołać metodę super z dokumentacji Api.

Czasami trzeba coś zrobić przed wywołaniem metody super (np. Filtrować atrybut lub wykonać akcję). Czasami twój kod musi się zdarzyć po wykonaniu super metody.

Jest to ściśle związane z konkretną implementacją.

+3

Dokumentacja brzmi "Uwaga: Twoja implementacja tych metod cyklu życia musi zawsze wywoływać implementację nadklasy przed wykonaniem jakiejkolwiek pracy, jak pokazano w przykładach powyżej.". Z twojej odpowiedzi rozumiem, że czasami musisz złamać tę zasadę? –

+0

Metoda super powinna zawsze być wywoływana, gdy dokumentacja wyraźnie mówi tak. Zazwyczaj możesz wybrać, co zrobić przed i po super rozmowie. Przy nadpisywaniu metody bazowej zawsze powinieneś rozumieć sposób działania tej metody. To, czy zdecydujesz się wywołać metodę super, zależy od a) czy musisz (np. Dokumentacja mówi) czy b) chcesz mieć funkcjonalność podstawową. Cytat w twoim komentarzu wskazuje, że konkretna okoliczność wymaga wywołania super metody przed jakimkolwiek niestandardowym przetwarzaniem @arne –

+3

Po prostu mówi "zawsze". Nie znalazłem żadnego szczególnego warunku wstępnego w dokumentach. –

15

Kod źródłowy Androida może nam wszystko powiedzieć. Jeśli zaznaczysz klasie Super aktywny można znaleźć następujące wiersze:

protected void onResume() { 
    if (DEBUG_LIFECYCLE) Slog.v(TAG, "onResume " + this); 
    getApplication().dispatchActivityResumed(this); 
    mCalled = true; 
} 

na tej podstawie, bez względu na to przed, czy po to się nazywa.

Powiązane problemy