Perché usiamo il metodo super onCreate() all’interno del metodo onCreate() quando facciamo programmazione Android?

Ogni attività viene avviata attraverso una sequenza di chiamate di metodi. onCreate() è la prima di queste chiamate.

Ogni singola attività estende android.app.Activity direttamente o sottoclassificando un'altra sottoclasse di Activity.

In Java, quando si eredita da una classe, è possibile sovrascrivere i suoi metodi per eseguire il proprio codice in essi. Un esempio molto comune di questo è l'override del metodo toString() quando si estende java.lang.Object.

Quando sovrascriviamo un metodo, abbiamo la possibilità di sostituire completamente il metodo nella nostra classe, o di estendere il metodo esistente della classe madre'. Chiamando super.onCreate(savedInstanceState);, dite alla Dalvik VM di eseguire il vostro codice in aggiunta al codice esistente nella onCreate() della classe madre. Se omettete questa linea, allora viene eseguito solo il vostro codice. Il codice esistente viene ignorato completamente.

Tuttavia, dovete includere questa superchiamata nel vostro metodo, perché se non lo fate il codice onCreate() in Activity non viene mai eseguito, e la vostra applicazione si imbatterà in ogni sorta di problema come il fatto di non avere un contesto assegnato all'Activity (anche se incontrerete una SuperNotCalledException prima di avere la possibilità di capire che non avete un contesto).

In breve, le classi Android possono essere incredibilmente complesse. Il codice nelle classi del framework gestisce cose come il disegno dell'interfaccia utente, la pulizia della casa e il mantenimento dei cicli di vita delle attività e delle applicazioni. Le chiamate super permettono agli sviluppatori di eseguire questo codice complesso dietro le quinte, fornendo comunque un buon livello di astrazione per le nostre applicazioni.

Fonte: super.onCreate(savedInstanceState);

Spero che questo aiuti! Buona fortuna!