본문으로 건너뛰기

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