Per rispondere alla tua domanda attuale, la creazione automatica della chiamata a super.onCreate () è una funzionalità del plugin ADT. In java, non è possibile forzare direttamente una sottoclasse a chiamare la super implementazione di un metodo, afaik (vedere il modello descritto in altre risposte per aggirare il problema). Tuttavia, tieni presente che in Android non stai creando un'istanza di oggetti Activity (o oggetti Service) direttamente: passi un Intent al sistema e il sistema crea un'istanza dell'oggetto e chiama onCreate () su di esso (insieme ad altri metodi del ciclo di vita). Quindi il sistema ha un riferimento diretto all'oggetto dell'istanza Activity ed è in grado di controllare (presumibilmente) alcuni booleani impostati su true nell'implementazione della superclasse di onCreate (). Anche se non so esattamente come sia implementato, probabilmente assomiglia a questo:
class Activity
{
onCreate()
{
superCalled = true;
...
}
...
}
E nella classe di livello "sistema" che riceve l'Intent e da esso istanzia l'oggetto Activity:
...
SomeActivitySubclass someActivitySubclassObject = new SomeActivitySubclass();
someActivitySubclassObject.onCreate();
if (!someActivityObject.isSuperCalled())
{
Exception e = new Exception(...)
throw e;
}
La mia ipotesi è che probabilmente sia leggermente più complesso di così, ma hai capito. Eclipse crea automaticamente la chiamata perché il plug-in ADT glielo dice, per comodità. Buona programmazione!