Nucleus
Lifecycle

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.

ÉtapeModulePage
Démarrage à froid et verrou d'instancecore-runtime (SingleInstanceManager)Single instance
URL et associations de fichierscore-runtime (DeepLinkHandler) + DSL pluginDeep links
Bundle id, version et vendeur au runtimecore-runtime (NucleusApp)App metadata
Mode de packaging de l'appcore-runtime (ExecutableRuntime)Executable type
Menu du dock (macOS)launcher-macosLauncher : macOS
Overlays taskbar et jump list (Windows)launcher-windowsLauncher : Windows
Unity launcher et quicklist (Linux)launcher-linuxLauncher : Linux
Démarrage au loginautolaunchAuto-launch
Tâches périodiques et cronschedulerScheduler
Agents SMAppService (macOS)service-management-macosService management
Efficacité énergétique et keep-awakeenergy-managerEnergy manager
Progression dans le dock ou la taskbartaskbar-progressTaskbar 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-runtime et nucleus-application mettent en place sous votre main.