脚本生命周期——入口、事件监听、退出清理
脚本入口
Auto.js 脚本从上到下顺序执行,第一行就是入口:
// 等无障碍就绪(推荐放在第一行)
auto.waitFor();
// 开始业务逻辑
launchApp("淘宝");
// ...
没有 main() 函数的概念,写在文件顶层的代码直接跑。
常用事件监听
脚本退出事件(最重要)
events.on("exit", function() {
toast("脚本已退出");
// 关闭悬浮窗、清理资源等收尾工作
});
以下情况会触发 exit 事件:
- 脚本执行完正常结束
- 你手动点了「停止」
- 脚本报错崩溃
- 系统杀了 Auto.js 进程(可能来不及执行完)
无障碍服务状态变化
events.on("accessibility-service", function(enabled) {
if (!enabled) {
toast("无障碍服务被关闭,脚本暂停");
}
});
应用启动 / 切换
// 每次无障碍服务监听到应用切换都会触发
auto.on("window", function() {
var pkg = currentPackage();
log("当前应用:" + pkg);
});
按键事件
// 监听实体按键
events.observeKey();
events.on("key", function(e) {
if (e.keyCode == 4) { // 返回键
log("用户按了返回");
}
});
脚本退出方式
// 正常退出(执行完 exit 事件)
exit();
// 抛出异常强制退出
throw new Error("遇到致命错误");
// 直接 kill(不执行 exit 事件,慎用)
// (无对应 API,由系统杀进程触发)
完整示例
auto.waitFor();
// 注册退出清理
events.on("exit", function() {
log("脚本退出,清理中...");
// 关闭自定义悬浮窗等
});
// 监听应用切换
auto.on("window", function() {
log("当前:" + currentPackage());
});
// 主逻辑
log("开始执行");
launchApp("淘宝");
text("每日签到").waitFor().click();
log("完成");