Registrar um callback de encerramento (register_atexit)
Declaração
original_callback = register_atexit(name, callback)
Parâmetros
- name
Texto, obrigatório; identifica o callback registrado. Usar o mesmonamesubstitui o callback já registrado. - callback
Função, obrigatória; é executada quando o script termina. Certifique-se de que sua execução seja rápida e possa ser repetida com segurança. Se for nil, cancela o registro do callback donameatual.
Valor de retorno
- original_callback
Função; callback anterior, antes de ser substituído por um registro com o mesmo nome. Retornanilse nada estava registrado e pode ser usado para restaurar o callback anterior.
Descrição
O callback registrado por
register_atexité executado quando o script termina, inclusive quando o usuário o encerra usando as teclas de volume, e é chamado antes da coleta de lixo do Lua.
Ao registrar vários callbacks comnamediferentes, a ordem de chamada não é controlada; se precisar de uma ordem específica, faça o agendamento dentro de um único callback.
Se o callback precisar executar operações demoradas, limite a duração por conta própria; caso contrário, isso poderá prejudicar a experiência de encerramento.
Esta função está disponível a partir da versão 20250705.
Exemplo
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
Nota: o código acima usa as funções sys.toast e sys.msleep, que não pertencem a este capítulo.