Aller au contenu principal

Enregistrer un rappel de terminaison (register_atexit)

Déclaration

original_callback = register_atexit(name, callback)

Paramètres

  • nom
    Chaîne, obligatoire, qui identifie le rappel enregistré. L’utilisation du même nom remplace le rappel déjà enregistré.
  • rappel
    Fonction, obligatoire, exécutée à la sortie du script ; veillez à ce qu’elle s’exécute rapidement et puisse être appelée plusieurs fois sans danger. Si sa valeur est nil, le rappel associé à nom est désenregistré.

Valeur de retour

  • ancien_rappel
    Fonction, ancien rappel remplacé par l’enregistrement de même nom ; renvoie nil s’il n’y avait aucun enregistrement précédent, et peut servir à restaurer l’ancien rappel.

Description

Le rappel enregistré par register_atexit est exécuté à la sortie du script, y compris lorsque l’utilisateur termine le script avec les touches de volume, et est appelé avant le ramasse-miettes de Lua. Lorsque plusieurs rappels sont enregistrés avec des nom différents, leur ordre d’appel n’est pas garanti ; si un ordre précis est nécessaire, orchestrez-les dans un seul rappel. Si un rappel doit effectuer une opération longue, limitez vous-même sa durée, faute de quoi l’expérience de sortie peut être affectée. Cette fonction est disponible dans les versions postérieures à 20250705.

Exemple

register_atexit("cleanup", function()
sys.toast("脚本退出前清理资源")
sys.msleep(300)
end)

while true do
sys.toast("使用音量键尝试退出脚本\n" .. os.date("%Y-%m-%d %H:%M:%S"))
sys.msleep(1000)
end

Remarque : le code ci-dessus utilise les fonctions hors de ce chapitre sys.toast et sys.msleep.