註冊終止回調 (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.toast、sys.msleep