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.

72voto

Chandra Sekhar Points 6512

Dans les programmes Java de base, nous avons besoin d'un main() car, lors de l'exécution du code d'octet, la JVM recherchera la méthode main() dans la classe et commencer à l'exécuter.

Dans le cas d'Android, la machine virtuelle Dalvik (après Android 5.0, DVM est remplacée par Android Runtime) est conçue pour trouver une classe qui est une sous-classe de Activity et qui est défini comme un LAUNCHER pour lancer l'exécution de l'application à partir de son onCreate() il n'y a donc pas besoin d'une méthode main() método.

Pour plus d'informations, voir le cycle de vie de Activity .

26voto

David Wasser Points 23169

En fait, le main() est la classe du cadre Android android.app.ActivityThread . Cette méthode crée l'interface principale (UI) Thread pour un processus OS, met en place le Looper sur elle et lance la boucle d'événement.

Le cadre Android est responsable de la création et de la destruction des processus du système d'exploitation, du lancement des applications, du démarrage des activités, des services et d'autres composants. Le site ActivityManager fait partie du cadre Android et est responsable de la coordination et de la gestion des différents composants.

L'architecture d'Android est un peu différente de celle des applications Java autonomes auxquelles vous êtes peut-être habitué. La plus grande différence est que tous vos composants ( Activity , Service , BroadcastReceiver ) ne s'exécutent pas nécessairement dans le même processus d'OS ou dans la même machine virtuelle (VM). Il est possible que des composants d'une même application s'exécutent dans différents processus d'OS et il est également possible que des composants de différentes applications s'exécutent dans le même processus d'OS. En Java traditionnel, le main() est la méthode qui est appelée par la machine virtuelle après que le processus OS ait été créé et que la machine virtuelle ait terminé son initialisation.

17voto

BobF Points 304

Android utilise le langage java, mais s'exécute en utilisant un modèle d'exécution modifié. Comme d'autres l'ont dit, un manifeste est inclus dans chaque paquet. Le point de lancement est spécifié dans ce manifeste. Allez sur le site Android et suivez les tutoriels de base. Cela vous permettra d'être opérationnel et de comprendre le processus de création/déploiement/exécution et le cycle de vie de base des applications.

13voto

W.K.S Points 1814

Lire este article du blog pour comprendre comment une application Android démarre :

Lors du démarrage du système Android, le noyau Linux appelle d'abord la fonction processus "init". init lit les fichiers "/init.rc" et "init.device.rc". "init.device.rc" est spécifique au périphérique, sur le périphérique virtuel ce fichier s'appelle "init.goldfish.rc".

init.rc démarre le processus "Zygote" via le programme "/system/bin/app_process". Zygote charge les classes Java principales et effectue un traitement initial de celles-ci. Ces classes peuvent être réutilisées par l'application Android et cette étape les rend donc plus rapides à démarrage. Une fois le travail initial de Zygote effectué, le processus écoute un socket et attend les requêtes. un socket et attend les demandes.

Si vous regardez dans le ZygoteInit vous trouverez la méthode principale.

Comme d'autres l'ont mentionné, cette main() est impliquée dans la configuration de l'environnement de l'application Android. En ce qui concerne le développeur, le point de départ est l'environnement de l'application Android. onCreate() de l'activité Lanceur.

3voto

mauris Points 19666

Dans Android, le système d'exploitation utilise la machine virtuelle Dalvik. Le principal point d'entrée de l'exécution de l'application est encapsulé dans le framework. Vous pouvez jeter un coup d'œil à " Qu'est-ce qu'Android ? "

En fait, chaque activité dans Android peut être considérée comme une application à part entière avec son propre cycle de vie.

0 votes

Oui.... c'est plus abstrait. J'apprécie votre réponse mais si c'est une classe java, comment se fait-il qu'elle n'ait pas de main et qu'elle démarre.

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