51 votes

Où se trouve main() dans Android ?

Je suis nouveau dans le monde d'Android et j'étudiais le cadre de travail, ce qui m'a poussé à poser cette question. Puisque nous étendons l'activité dans Android, il doit y avoir main quelque part dans Activity ou il y a une classe cachée qui Activity met en œuvre qui contient main .

J'ai regardé partout mais je ne l'ai pas trouvé. J'apprécierais si quelqu'un pouvait me donner une idée claire à ce sujet.

2voto

Samir Mangroliya Points 21263
onCreate() Method....See lifecycle of android class (Activity).....

http://developer.Android.com/reference/Android/app/Activity.html

2voto

Frankline Points 8947

Vous lui indiquez lequel exécuter au démarrage dans le fichier manifeste. Il n'y a pas de main() parce qu'il n'y a pas besoin d'en avoir. main() est une convention utilisée pour les applications Java "ordinaires", mais pas pour les applets de navigateur. Le système crée l'objet activité et appelle des méthodes à l'intérieur de celui-ci, qui peut ou non être appelé main. Dans ce cas, ce n'est pas le cas.

onCreate est différent d'un main() et d'un constructeur, en ce sens qu'il peut être appelé deux fois sur une même activité, par exemple si le processus est tué et que l'utilisateur retourne à l'activité. Voir este

De nombreux éléments que l'on peut considérer comme une "application" Java n'ont pas leur propre système d'exploitation. main() méthode. Par exemple, IIRC, les servlets, WARs, et autres n'ont pas de main() méthodes -- le main() s'il y en a une, se trouve dans le conteneur.

0voto

jw_ Points 1157

Lorsque vous démarrez un nouveau processus pour exécuter une App/Service, enfin dans ActivityManagerService.java, il y a :

final String entryPoint = "android.app.ActivityThread";

return startProcessLocked(hostingType, hostingNameStr, entryPoint, app, uid, gids,
                runtimeFlags, mountExternal, seInfo, requiredAbi, instructionSet, invokeWith,
                startTime);

Qui finalement appelle Process.start. C'est la même chose qu'avec le java standard, vous passez une classe puis la VM crée un nouveau processus et exécute main() de ActivityThread.java :

public static void main(String[] args) {
         ......
    Looper.loop();

    throw new RuntimeException("Main thread loop unexpectedly exited");
}

La fonction principale déclenchera une action qui enverra un message IPC pour notifier au gestionnaire d'activité que le processus a démarré avec succès, puis après avoir notifié le processus qui a initié le démarrage du nouveau processus de cet événement, le gestionnaire d'activité notifiera le nouveau processus pour faire le processus de démarrage de l'activité réelle, qui crée la classe d'activité selon le manifeste, puis appelle OnCreate, etc.

Il y a quelques réponses ici qui sont totalement fausses et qui obtiennent beaucoup de votes, j'espère qu'un modéré etc. pourra vérifier cela.

0voto

Neeraj Sharma Points 51

here is the main method

Regardez le cadre de la pile, il commence à partir de main().

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X