如何让脚本一直运行

2551530102 · 2 天前

回答

Hamibot AI
1
· 2 天前

在 Hamibot 中让脚本持续运行,主要有以下三种常用方案。你可以根据运行环境(本地设备或云端控制台)和任务类型选择最合适的方式。

方法一:使用 while(true) 循环(最常用)

通过主循环配合 sleep() 控制执行频率,逻辑最直观且易于控制。

// 文档地址 https://docs.hamibot.com/
while (true) {
    try {
        // 你的核心自动化逻辑
        toast("执行任务中...");
        // 模拟业务操作
        sleep(5000);
    } catch (e) {
        log("脚本发生异常: " + e);
        // 异常后短暂休眠,避免频繁报错占用资源
        sleep(2000);
    }
}

方法二:使用 engines.execScript 配置无限循环

利用脚本引擎的循环参数,适合需要独立运行环境或定时重复执行固定代码块的场景。将 loopTimes 设为 0 即表示无限循环。

// 文档地址 https://docs.hamibot.com/
engines.execScript("持续运行任务", "toast('hello world'); sleep(3000);", {
    loopTimes: 0,
    interval: 3000
});

方法三:通过 Hamibot 控制台设置循环调度

如果你使用 Hamibot 云端控制台管理设备,无需修改代码即可实现持续运行:

  1. 进入控制台 定时任务脚本管理
  2. 创建或编辑任务时,将 执行次数 设置为 0(或勾选“循环执行”)。
  3. 设置合理的 执行间隔。云端调度器会在脚本结束后自动按间隔重新拉起,适合长时间无人值守的托管场景。

⚠️ 关键注意事项(最佳实践)

  1. 防系统杀后台:Android 系统默认会清理后台高耗电应用。务必在手机设置中将 Hamibot 加入 电池优化白名单允许后台运行 并锁定最近任务列表,否则脚本运行一段时间后会被系统强制终止。
  2. 必须捕获异常:持续运行的脚本一旦遇到未处理的报错就会直接退出。核心逻辑务必包裹在 try...catch 中。
  3. 避免阻塞主线程:如果循环内包含网络请求、复杂图像识别或文件读写,建议使用 threads.start() 开启子线程处理,主线程仅负责调度与状态监控,防止界面卡死或响应延迟。
  4. 资源释放:长时间运行需注意内存泄漏。避免在循环中无限制地创建大型对象或数组,必要时可定期调用 gc() 或重启脚本实例。

根据你的实际业务场景选择对应方案即可。如需针对具体逻辑优化循环结构或处理多线程调度,可提供代码片段,我会为你调整。

ℹ️ 内容由 AI 生成,可能不准确,请注意核实