B2B网络软件
标题:
安卓脚本runTime相关功能示例
[打印本页]
作者:
YYPOST群发软件
时间:
2 小时前
标题:
安卓脚本runTime相关功能示例
安卓脚本runTime相关功能示例
5.png
(1.54 MB, 下载次数: 4)
下载附件
2 小时前
上传
/**
* AIWROK 运行时方法完整演示
* 展示所有 runTime 相关功能的使用方式
*
* 注意:所有方法都通过 runTime 对象调用
*/
// ==================== 全局变量 ====================
var intervalId = null; // setInterval 的 ID(整数)
var timeoutId = null; // setTimeout 的 ID(整数)
var executionCount = 0; // 执行次数计数器
var maxExecutions = 5; // 最大执行次数
// ==================== 1. Import - 调用执行其他 JS 文件 ====================
/**
* String Import(String arg0)
* 参数: String arg0 - 文件路径,默认调用代码下的文件比如1.js
* 其他路径可以直接写路径地址,但是js文件必须是经过加密的不能加载明文js文件
* 返回值: String
*/
function demoImport() {
print.log("【演示】Import 调用其他 JS 文件");
try {
// 示例1:导入默认路径下的加密脚本文件(需要先创建1.js并加密)
// var result = Import("1.js");
// print.log("导入结果: " + result);
// 示例2:导入完整路径的加密脚本文件
// var result2 = Import("/sdcard/AIWROK/encrypted_script.js");
// 示例3:导入获取外网IP的脚本
Import("获取自己外网IP.js");
print.log("✓ Import 功能演示完成");
print.log(" 注意:只能加载加密后的JS文件,不能加载明文JS文件");
} catch (e) {
print.log("✗ Import 失败: " + e.message);
}
}
// ==================== 2. setInterval - 循环执行函数 ====================
/**
* int setInterval(Function arg0, int arg1)
* 参数:
* Function arg0 - 循环执行的function
* int arg1 - 间隔时间毫秒(检测时间)
* 返回值: int - 定时器ID,用于clearInterval
*/
function startInterval() {
print.log("【启动】runTime.setInterval 循环执行");
executionCount = 0;
// 定义要循环执行的函数
var callback = function() {
executionCount++;
print.log("循环执行第 " + executionCount + " 次 - 时间: " + new Date().toLocaleTimeString());
// 达到最大执行次数后自动停止
if (executionCount >= maxExecutions) {
stopInterval();
}
};
// 启动循环执行,每1000毫秒(1秒)执行一次
intervalId = runTime.setInterval(callback, 1000);
print.log("✓ setInterval 已启动,ID=" + intervalId + ",间隔1000ms,将执行 " + maxExecutions + " 次");
}
/**
* void clearInterval(int arg0)
* 参数: int arg0 - setInterval返回的定时器ID
* 返回值: void
*/
function stopInterval() {
if (intervalId !== null) {
runTime.clearInterval(intervalId);
print.log("✓ clearInterval(" + intervalId + ") 已停止,共执行 " + executionCount + " 次");
intervalId = null;
} else {
print.log("⚠ setInterval 未运行");
}
}
// ==================== 3. setTimeout - 异步延迟加载函数 ====================
/**
* int setTimeout(Function arg0, int arg1)
* 参数:
* Function arg0 - 执行的function
* int arg1 - 间隔时间毫秒(延迟时间)
* 返回值: int - 定时器ID,用于stopTimeout
*/
function startTimeout() {
print.log("【启动】runTime.setTimeout 延迟执行");
// 定义延迟后要执行的函数
var callback = function() {
print.log("✓ setTimeout 延迟 3 秒后执行完成 - 时间: " + new Date().toLocaleTimeString());
timeoutId = null;
};
// 设置延迟执行,3000毫秒(3秒)后执行
timeoutId = runTime.setTimeout(callback, 3000);
print.log("✓ setTimeout 已设置,ID=" + timeoutId + ",延迟3000ms后执行");
}
/**
* void stopTimeout(int arg0)
* 参数: int arg0 - setTimeout生成的id
* 返回值: void
*/
function stopTimeout() {
if (timeoutId !== null) {
runTime.stopTimeout(timeoutId);
print.log("✓ stopTimeout(" + timeoutId + ") 已取消");
timeoutId = null;
} else {
print.log("⚠ setTimeout 未运行或已执行完毕");
}
}
// ==================== 4. getObjectPath - 获取当前项目目录 ====================
/**
* String getObjectPath()
* 参数: 无
* 返回值: String - 当前项目目录路径
*/
function demoGetObjectPath() {
print.log("【演示】runTime.getObjectPath 获取项目目录");
try {
var projectPath = runTime.getObjectPath();
print.log("✓ 当前项目目录: " + projectPath);
// 可以用于构建相对路径
var configPath = projectPath + "/config.json";
print.log(" 配置文件路径: " + configPath);
} catch (e) {
print.log("✗ 获取项目目录失败: " + e.message);
}
}
// ==================== 5. restart - 重启应用 ====================
/**
* void restart()
* 参数: 无
* 返回值: void
* 说明: 重启应用,需要3秒
*/
function demoRestart() {
print.log("【警告】runTime.restart 重启应用");
print.log("应用将在 3 秒后重启...");
// 实际使用时直接调用即可
// runTime.restart();
print.log(" 此处仅演示,未实际执行重启(避免中断演示流程)");
print.log("如需重启,请取消注释 runTime.restart() 调用");
}
// ==================== 6. stopAllRuning - 停止所有运行库 ====================
/**
* void stopAllRuning()
* 参数: 无
* 返回值: void
* 说明: 停止所有后台运行的脚本和线程
*/
function demoStopAllRunning() {
print.log("【警告】runTime.stopAllRuning 停止所有运行");
// 先停止定时器和延时器
stopInterval();
stopTimeout();
print.log("✓ 已停止所有定时任务");
print.log("⚠ runTime.stopAllRuning() 会停止所有后台运行的脚本和线程");
print.log("如需停止所有运行,请取消注释 runTime.stopAllRuning() 调用");
// 实际使用时:
// runTime.stopAllRuning();
}
// ==================== 主演示流程 ====================
function main() {
print.log("========================================");
print.log("AIWROK 运行时方法完整演示");
print.log("========================================");
// 1. 获取项目目录
demoGetObjectPath();
sleep.second(秒=2);
// 2. 演示 Import
demoImport();
sleep.second(秒=2);
// 3. 启动循环执行
print.log("----------------------------------------");
startInterval();
sleep.second(秒=2);
// 4. 启动延迟执行
startTimeout();
sleep.second(秒=2);
// 5. 等待循环执行完成
print.log("等待循环执行完成...");
sleep.second(秒=6); // 等待 6 秒让循环执行完毕
sleep.second(秒=2);
// 6. 演示重启功能(不实际执行)
print.log("----------------------------------------");
demoRestart();
sleep.second(秒=2);
// 7. 演示停止所有运行(不实际执行)
print.log("----------------------------------------");
demoStopAllRunning();
sleep.second(秒=2);
print.log("========================================");
print.log("演示完成!");
print.log("========================================");
}
// ==================== 工具函数 ====================
/**
* 手动触发一次循环执行(用于测试)
*/
function triggerInterval() {
if (intervalId === null) {
startInterval();
} else {
print.log("⚠ setInterval 已在运行中");
}
}
/**
* 立即停止所有定时任务
*/
function stopAllTasks() {
stopInterval();
stopTimeout();
print.log("✓ 所有定时任务已停止");
}
/**
* 查看当前运行状态
*/
function checkStatus() {
print.log("【运行状态】");
print.log(" setInterval: " + (intervalId !== null ? "运行中" : "已停止"));
print.log(" setTimeout: " + (timeoutId !== null ? "运行中" : "已停止/已完成"));
print.log(" 执行次数: " + executionCount + "/" + maxExecutions);
}
// ==================== 执行入口 ====================
// 自动运行完整演示
main();
// 手动调用各个函数进行测试(可选)
demoGetObjectPath();
triggerInterval();
checkStatus();
stopAllTasks();
复制代码
欢迎光临 B2B网络软件 (http://bbs.niubt.cn/)
Powered by Discuz! X3.2