Cycle de vie, du démarrage à froid à la mise en veille
Les modules lifecycle relient une app Nucleus aux événements et services de l'OS qui survivent à chaque fenêtre.
Les modules lifecycle relient une app Nucleus aux événements et services du système d'exploitation qui survivent à n'importe quelle fenêtre : démarrage à froid et verrou d'instance, deep links, intégration au dock et à la taskbar, démarrage au login, planification de tâches de fond et gestion de l'énergie. Chaque étape est un module distinct, et vous n'ajoutez que ceux dont vous avez besoin.
Modules par étape du cycle de vie
Chaque étape correspond à un module et à une page. Les deux fondations, core-runtime et
nucleus-application, portent plusieurs des lignes ci-dessous.
| Étape | Module | Page |
|---|---|---|
| Démarrage à froid et verrou d'instance | core-runtime (SingleInstanceManager) | Single instance |
| URL et associations de fichiers | core-runtime (DeepLinkHandler) + DSL plugin | Deep links |
| Bundle id, version et vendeur au runtime | core-runtime (NucleusApp) | App metadata |
| Mode de packaging de l'app | core-runtime (ExecutableRuntime) | Executable type |
| Menu du dock (macOS) | launcher-macos | Launcher : macOS |
| Overlays taskbar et jump list (Windows) | launcher-windows | Launcher : Windows |
| Unity launcher et quicklist (Linux) | launcher-linux | Launcher : Linux |
| Démarrage au login | autolaunch | Auto-launch |
| Tâches périodiques et cron | scheduler | Scheduler |
Agents SMAppService (macOS) | service-management-macos | Service management |
| Efficacité énergétique et keep-awake | energy-manager | Energy manager |
| Progression dans le dock ou la taskbar | taskbar-progress | Taskbar progress |
Fonctionnement
Chaque module encapsule l'API native de son étape — SMAppService, ITaskbarList3,
NSDockTile, com.canonical.Unity.LauncherEntry, les timers systemd et d'autres —
derrière une surface Kotlin, pour que vous gardiez un seul code tout en laissant l'app
s'intégrer à chaque OS via ses propres mécanismes. Les modules sont indépendants : n'ajoutez
que ceux dont vous avez besoin, et chacun se réduit à un no-op sur les plateformes qu'il ne
prend pas en charge.
Deux modules portent les autres. core-runtime fournit les primitives d'exécution :
Platform, NucleusApp, SingleInstanceManager, DeepLinkHandler et
ExecutableRuntime. nucleus-application fournit le point d'entrée
nucleusApplication { }, qui démarre le runtime et initialise ces primitives. Commencez par
ces deux pages, puis lisez le module correspondant au comportement dont vous avez besoin.
Les schemes de deep link se déclarent dans le build Gradle avec le DSL
protocol(name, schemes...), que le plugin traduit au moment du packaging en Apple Events
sur macOS, en entrées de registre sur Windows et en associations MIME .desktop sur Linux.
Et ensuite
- Single instance — garantir une seule instance et lui transmettre les arguments de lancement.
- Deep links — enregistrer des schemes d'URL personnalisés et traiter les URL entrantes.
- Architecture — ce que
core-runtimeetnucleus-applicationmettent en place sous votremain.