종료 콜백 등록 (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를 사용합니다.