Android System Startup

La plupart des utilisateurs Android utilisent leur téléphone pour des appels, des SMS, naviguer sur internet, écouter de la musique ou utiliser des applications. Si l’envie de vouloir développer à très bas niveau arrive, il est intéressant de connaitre la structure interne d’Android. Cet article va s’intéresser aux actions produites lors du démarrage du système. L’objectif étant de voir les principaux acteurs et leur intégration dans l’architecture.

  • Bootloader
  • Kernel
  • Init
  • Zygote
  • SystemServer + ActivityManager
  • Launcher (Home)

SystemServer

  • Démarre chaque service Java dans des threads différents et les enregistre dans le SystemManager, dont :
    •  WindowManager
    • PhoneWindowManager
    • SurfaceFlinger
    • ActivityManager

WindowManager

  • Demande au SurfaceFlinger de créer un layout global
  • Propage les événements d’entré au client
  • Animation transition

SurfaceFlinger

  • Alloue une Surface
  • Interagit avec OpenGL

ActivityManager

  • Gère le cycle de vie des activités
  • Expédie les Intents
  • Envoie l’intent.CATEGORY_HOME

PhoneWindowManager

  • Démarre le PowerManager dès que WindowManager s’initialise
  • Intercepte/Gère les Keys events tel Home, Back. Ce mapping sera donné à chaque PhoneWindow
  • L’appui long sur le bouton Home démarrera la boîte de dialogue des applications récentes.
  • Gère le comportement du bouton Power
  • Gère le comportement de l’acceleromètre, des rotations
  • Ajoute une fenêtre de démarrage (une instance de PhoneWinow) à une application

PhoneWindow (implémentation de la classe abstraite Window)

  • setContentView (inflate from a View/Activity)
  • preparePanel (set the proper keymap)
  • fait une requête pour que les appuis touches soit mappé avec l’activité

Leave a Reply