Aby odpowiedzieć na twoje aktualne pytanie, automatyczne tworzenie wywołania super.onCreate () jest funkcją wtyczki ADT. W Javie nie można bezpośrednio zmusić podklasy do wywołania super implementacji metody, afaik (obejrzyj wzorzec opisany w innych odpowiedziach w celu obejścia problemu). Należy jednak pamiętać, że w systemie Android nie tworzysz instancji obiektów Activity (lub obiektów Service) bezpośrednio - przekazujesz Intent do systemu, a system tworzy instancję obiektu i wywołuje onCreate () na nim (wraz z innymi metodami cyklu życia). Tak więc system ma bezpośrednie odwołanie do obiektu do instancji Activity i jest w stanie sprawdzić (prawdopodobnie) niektóre wartości logiczne, które są ustawione na true w implementacji onCreate () nadklasy. Chociaż nie wiem dokładnie, jak jest zaimplementowany, prawdopodobnie wygląda to mniej więcej tak:
class Activity
{
onCreate()
{
superCalled = true;
...
}
...
}
A w klasie poziomu „systemowego”, która odbiera intencję i tworzy z niej instancję obiektu Activity:
...
SomeActivitySubclass someActivitySubclassObject = new SomeActivitySubclass();
someActivitySubclassObject.onCreate();
if (!someActivityObject.isSuperCalled())
{
Exception e = new Exception(...)
throw e;
}
Domyślam się, że jest to prawdopodobnie nieco bardziej złożone, ale masz pomysł. Eclipse automatycznie tworzy połączenie, ponieważ wtyczka ADT nakazuje mu to dla wygody. Miłego kodowania!