Para responder a su pregunta real, la creación automática de la llamada a super.onCreate() es una característica del complemento ADT. En java, no se puede forzar directamente a una subclase para que invoque la implementación súper de un método, afaik (consulte el patrón descrito en otras respuestas para solucionar problemas). Sin embargo, ten en cuenta que en Android no estás instanciando objetos de actividad (u objetos de servicio) directamente: pasas una intención al sistema y el sistema crea una instancia del objeto y llama a Crear() sobre él (junto con otros métodos de ciclo de vida). Entonces, el sistema tiene una referencia de objeto directo a la instancia de la Actividad y es capaz de verificar (presumiblemente) algún Booleano que se establece en verdadero en la implementación de la superclase de onCreate(). Aunque no sé exactamente cómo se implementa, es probable que se ve algo como esto:
class Activity
{
onCreate()
{
superCalled = true;
...
}
...
}
Y en el "sistema" clase nivel que recibe la intención y una instancia del objeto Actividad de ella:
...
SomeActivitySubclass someActivitySubclassObject = new SomeActivitySubclass();
someActivitySubclassObject.onCreate();
if (!someActivityObject.isSuperCalled())
{
Exception e = new Exception(...) //create an exception with appropriate details
throw e;
}
Supongo que es probablemente un poco más complejo que eso, pero ya entiendes la idea. Eclipse crea automáticamente la llamada porque el complemento ADT se lo dice, para su comodidad. Feliz codificación!
Quiero saber esto también. Y no solo es útil Eclipse, si elimino la llamada a super.onCreate(), la aplicación genera un error de tiempo de ejecución que dice: "no llamó a super.onCreate()". Así que sí, realmente te obliga a llamar al súper método. ¿Pero cómo? –
@RodrigoCastro Puede revisar los javadocs para cada método. Por ejemplo [onCreate()] (http://developer.android.com/reference/android/app/Activity.html#onCreate (android.os.Bundle)). –