在自动化脚本的开发和运维过程中,脚本的生命周期管理是至关重要的基础能力。无论是调试阶段的反复验证,还是生产环境中的任务调度,开发者都需要对脚本的启动、暂停和停止拥有精确的控制力。本文将系统性地梳理这三种操作的具体实现方式、适用场景以及注意事项。
一、启动脚本:从callScript到runTask
启动脚本是自动化任务的第一步。冰狐智能辅助提供了多个层次的脚本启动方式,开发者可以根据实际需求选择最适合的方案。
1. callScript——同步调用
callScript是冰狐平台最基础的脚本调用函数,用于同步执行移动端脚本中的main函数,其返回值为脚本的返回值。该函数的特点是直接在当前线程中执行,因此会阻塞当前线程直到被调用脚本执行完毕。
参数说明:
scriptName(必填):移动端脚本名,支持在线脚本和本地脚本params...(选填):任意个参数,直接透传给被调用的脚本
调用示例:
// 调用冰狐在线脚本 callScript('test'); // 调用手机存储中的本地脚本(绝对路径) callScript('/sdcard/test.js'); // 调用手机存储中的本地脚本(相对路径) callScript('test.js'); // 调用打包到APK中的资源脚本 callScript('asset:test.js', 12, 'abc');被调用的脚本需要按照以下格式编写:
function main(id, name) { console.log('id:' + id + ' name:' + name); return name + id; }适用场景:callScript适合在非UI线程中调用其他脚本,例如在后台服务脚本中串联多个子任务。
2. runTask——异步执行
与callScript不同,runTask用于在UI代码中执行移动端脚本,调用时会另外开启一个独立线程来执行脚本。由于UI线程不能被耗时操作阻塞,凡是涉及UI交互的脚本调用都应使用runTask。
参数说明:与callScript完全相同。
调用示例:
// 在UI代码中异步执行在线脚本 runTask('test'); // 在UI代码中异步执行本地脚本并传递参数 runTask('asset:test.js', 12, 'abc');适用场景:凡是涉及自定义UI的脚本,如带有界面的自动化工具、需要实时反馈的用户交互场景等,都应使用runTask。
3. setDefaultScript——设置默认脚本
除了动态调用,冰狐还提供了setDefaultScript函数,用于设置设备的默认脚本。调用该函数后设置永久有效,除非重新设置。如果需要取消默认脚本,可以传入空字符串。
// 设置绝对路径脚本 setDefaultScript('/sdcard/xx.js'); // 设置在线默认脚本 setDefaultScript('xx');4. Open API远程启动
对于需要从后端服务远程控制设备执行脚本的场景,冰狐提供了完整的Open API支持。通过/api/device/start接口可以远程启动设备,通过/api/script/exe接口可以远程执行设备端脚本。其中forceRun参数可以控制是否强制停止当前运行的脚本后再启动新脚本。
二、暂停脚本:pause与resume的配合使用
脚本暂停是一个非常有用的功能,尤其在调试阶段或者需要人工介入的场景中。
pause——暂停执行
pause函数用于暂停执行当前脚本。调用后,脚本会在该位置暂停,等待恢复信号。
参数说明:
showResumeButton(选填,默认false):是否显示带有“继续运行”按钮的悬浮框
调用示例:
// 暂停脚本,不显示悬浮按钮 pause(); // 暂停脚本,并显示带有继续按钮的悬浮框 pause(true);
工作机制:当showResumeButton为true时,调用pause后会自动在手机上弹出一个暂停按钮,用户手动点击该按钮后程序继续运行。若设置了tag参数,则出现tag后立即恢复执行。
resume——恢复执行
resume函数用于恢复被pause暂停的脚本执行。
调用示例:
// 恢复暂停的脚本继续执行 resume();
典型应用场景:
调试场景:在关键节点暂停脚本,检查当前变量状态、UI节点信息等
人工介入场景:在需要人工输入验证码、处理弹窗等环节暂停脚本
条件等待场景:暂停后等待特定条件满足再继续执行
三、停止脚本:stop的多种用法
停止脚本是脚本生命周期管理的终点,冰狐提供了多种停止方式,覆盖不同场景。
1. stop——停止当前脚本
stop函数用于停止执行当前脚本。
参数说明:
refresh(选填,默认为true):停止后是否刷新界面
调用示例:
// 停止脚本,并刷新界面 stop(); // 停止脚本,不刷新界面 stop(false);
2. 浏览器环境中的停止
在WebView控件加载的网页中,可以通过浏览器JavaScript调用冰狐的停止功能。系统内置了aznfzObject对象,其中包含stop方法:
// 在浏览器js中停止冰狐脚本 aznfzObject.stop();
同样,在浏览器js中也可以通过aznfzObject.exeScript执行冰狐脚本。
3. Open API远程停止
通过Open API的/api/device/stop接口可以远程停止设备上正在运行的脚本。这在批量设备管理场景中尤为重要——当某个设备出现异常或需要切换任务时,可以通过后端服务统一下发停止指令。
四、综合应用与实践建议
脚本生命周期管理的基本模式
一个完整的脚本生命周期通常遵循以下流程:
启动阶段:使用
callScript或runTask启动主脚本运行阶段:脚本执行业务逻辑
暂停/恢复阶段(可选):在需要人工介入或条件等待时使用
pause/resume停止阶段:任务完成后调用
stop正常退出,或异常时强制停止
关键注意事项
1. callScript与runTask的选择callScript不会创建独立线程,直接在当前线程中执行,因此不能在UI代码中使用。UI中的脚本调用必须使用runTask。
2. 调试模式与发布模式
冰狐智能辅助分为调试模式和发布模式:调试模式只能运行调试脚本,发布模式只能运行发布脚本。在开发调试时需要确保模式匹配。
3. 权限与运行环境
确保冰狐智能辅助已开启无障碍、后台运行、悬浮窗等全部权限,并将冰狐APP锁定以避免被系统后台清理,否则可能导致脚本执行中断。
4. 强制停止与forceRun
通过Open API启动脚本时,forceRun参数默认为true,即如果设备端已有脚本在运行,会强制停止后再运行新脚本。开发者应根据业务需求合理设置该参数。
结语
冰狐智能辅助为自动化脚本的生命周期管理提供了一套完整且高效的API体系。从启动时的callScript、runTask和setDefaultScript,到暂停时的pause与恢复时的resume,再到停止时的stop及其在不同环境中的变体,每个环节都有明确的函数和清晰的参数控制。熟练掌握这些API的使用方法,是编写稳定、可控的自动化脚本的基础,也是提升开发效率和运维质量的关键所在。