跳到主要内容

注册终止回调 (register_atexit)

声明

original_callback = register_atexit(name, callback)

参数

  • name
    文本型,必填,用于标识当前注册的回调;使用相同的 name 会覆盖已注册的回调
  • callback
    函数型,必填,在脚本退出时执行的函数,请确保其执行迅速并可安全重复调用。如果为 nil 则表示取消注册当前 name 的回调

返回值

  • original_callback
    函数型,被同名注册覆盖前的旧回调;若之前未注册则返回 nil,可以用来恢复旧回调

说明

register_atexit 注册的回调会在脚本退出、包含用户使用 音量键 结束脚本的情况下执行,并保证在 Lua 进行垃圾回收之前调用
当使用不同的 name 注册多个回调时,它们的调用顺序不受控制;如需要顺序执行,请在单个回调中自行调度
回调中如需调用耗时操作,请自行限制时长,否则可能影响退出体验
这个函数在 20250705 以后版本方可使用

示例

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

:上述代码中使用了非本章函数 sys.toastsys.msleep