Registrar una devolución de llamada de terminación (register_atexit)
Declaración
original_callback = register_atexit(name, callback)
Parámetros
- name
Tipo texto, obligatorio; identifica la devolución de llamada registrada actualmente. Usar el mismonamesobrescribe la devolución de llamada registrada - callback
Tipo función, obligatorio; función que se ejecuta al salir del script. Asegúrate de que se ejecute rápidamente y se pueda llamar varias veces de forma segura. Si es nil, cancela el registro de la devolución de llamada delnameactual
Valor devuelto
- original_callback
Tipo función; devolución de llamada anterior antes de que la sobrescribiera el registro con el mismo nombre. Si no había ninguna registrada, devuelvenil; se puede usar para restaurar la devolución anterior
Descripción
La devolución registrada mediante
register_atexitse ejecuta cuando termina el script, incluso si el usuario lo finaliza con las teclas de volumen, y se garantiza que se llame antes de que Lua realice la recolección de basura.
Si se registran varias devoluciones con distintosname, no se controla el orden de llamada; si necesitas ejecutarlas en orden, organízalas dentro de una sola devolución.
Si la devolución necesita realizar operaciones lentas, limita su duración por tu cuenta; de lo contrario, puede afectar a la experiencia de salida.
Esta función está disponible a partir de las versiones posteriores a 20250705
Ejemplo
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
Nota: el código anterior utiliza las funciones sys.toast y sys.msleep, que no pertenecen a este capítulo.