跳至主要內容

註冊終止回調 (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