Saltar al contenido principal

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 mismo name sobrescribe 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 del name actual

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, devuelve nil; se puede usar para restaurar la devolución anterior

Descripción

La devolución registrada mediante register_atexit se 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 distintos name, 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.