B2B网络软件

标题: 安卓脚本runTime相关功能示例 [打印本页]

作者: YYPOST群发软件    时间: 2 小时前
标题: 安卓脚本runTime相关功能示例

安卓脚本runTime相关功能示例
安卓脚本runTime相关功能示例 B2B网络软件



  1. /**
  2. * AIWROK 运行时方法完整演示
  3. * 展示所有 runTime 相关功能的使用方式
  4. *
  5. * 注意:所有方法都通过 runTime 对象调用
  6. */

  7. // ==================== 全局变量 ====================
  8. var intervalId = null;      // setInterval 的 ID(整数)
  9. var timeoutId = null;       // setTimeout 的 ID(整数)
  10. var executionCount = 0;     // 执行次数计数器
  11. var maxExecutions = 5;      // 最大执行次数

  12. // ==================== 1. Import - 调用执行其他 JS 文件 ====================
  13. /**
  14. * String Import(String arg0)
  15. * 参数: String arg0 - 文件路径,默认调用代码下的文件比如1.js
  16. *       其他路径可以直接写路径地址,但是js文件必须是经过加密的不能加载明文js文件
  17. * 返回值: String
  18. */
  19. function demoImport() {
  20.     print.log("【演示】Import 调用其他 JS 文件");
  21.    
  22.     try {
  23.         // 示例1:导入默认路径下的加密脚本文件(需要先创建1.js并加密)
  24.         // var result = Import("1.js");
  25.         // print.log("导入结果: " + result);
  26.         
  27.         // 示例2:导入完整路径的加密脚本文件
  28.         // var result2 = Import("/sdcard/AIWROK/encrypted_script.js");
  29.         
  30.         // 示例3:导入获取外网IP的脚本
  31.         Import("获取自己外网IP.js");
  32.         
  33.         print.log("✓ Import 功能演示完成");
  34.         print.log("  注意:只能加载加密后的JS文件,不能加载明文JS文件");
  35.     } catch (e) {
  36.         print.log("✗ Import 失败: " + e.message);
  37.     }
  38. }

  39. // ==================== 2. setInterval - 循环执行函数 ====================
  40. /**
  41. * int setInterval(Function arg0, int arg1)
  42. * 参数:
  43. *   Function arg0 - 循环执行的function
  44. *   int arg1 - 间隔时间毫秒(检测时间)
  45. * 返回值: int - 定时器ID,用于clearInterval
  46. */
  47. function startInterval() {
  48.     print.log("【启动】runTime.setInterval 循环执行");
  49.    
  50.     executionCount = 0;
  51.    
  52.     // 定义要循环执行的函数
  53.     var callback = function() {
  54.         executionCount++;
  55.         print.log("循环执行第 " + executionCount + " 次 - 时间: " + new Date().toLocaleTimeString());
  56.         
  57.         // 达到最大执行次数后自动停止
  58.         if (executionCount >= maxExecutions) {
  59.             stopInterval();
  60.         }
  61.     };
  62.    
  63.     // 启动循环执行,每1000毫秒(1秒)执行一次
  64.     intervalId = runTime.setInterval(callback, 1000);
  65.    
  66.     print.log("✓ setInterval 已启动,ID=" + intervalId + ",间隔1000ms,将执行 " + maxExecutions + " 次");
  67. }

  68. /**
  69. * void clearInterval(int arg0)
  70. * 参数: int arg0 - setInterval返回的定时器ID
  71. * 返回值: void
  72. */
  73. function stopInterval() {
  74.     if (intervalId !== null) {
  75.         runTime.clearInterval(intervalId);
  76.         print.log("✓ clearInterval(" + intervalId + ") 已停止,共执行 " + executionCount + " 次");
  77.         intervalId = null;
  78.     } else {
  79.         print.log("⚠ setInterval 未运行");
  80.     }
  81. }

  82. // ==================== 3. setTimeout - 异步延迟加载函数 ====================
  83. /**
  84. * int setTimeout(Function arg0, int arg1)
  85. * 参数:
  86. *   Function arg0 - 执行的function
  87. *   int arg1 - 间隔时间毫秒(延迟时间)
  88. * 返回值: int - 定时器ID,用于stopTimeout
  89. */
  90. function startTimeout() {
  91.     print.log("【启动】runTime.setTimeout 延迟执行");
  92.    
  93.     // 定义延迟后要执行的函数
  94.     var callback = function() {
  95.         print.log("✓ setTimeout 延迟 3 秒后执行完成 - 时间: " + new Date().toLocaleTimeString());
  96.         timeoutId = null;
  97.     };
  98.    
  99.     // 设置延迟执行,3000毫秒(3秒)后执行
  100.     timeoutId = runTime.setTimeout(callback, 3000);
  101.    
  102.     print.log("✓ setTimeout 已设置,ID=" + timeoutId + ",延迟3000ms后执行");
  103. }

  104. /**
  105. * void stopTimeout(int arg0)
  106. * 参数: int arg0 - setTimeout生成的id
  107. * 返回值: void
  108. */
  109. function stopTimeout() {
  110.     if (timeoutId !== null) {
  111.         runTime.stopTimeout(timeoutId);
  112.         print.log("✓ stopTimeout(" + timeoutId + ") 已取消");
  113.         timeoutId = null;
  114.     } else {
  115.         print.log("⚠ setTimeout 未运行或已执行完毕");
  116.     }
  117. }

  118. // ==================== 4. getObjectPath - 获取当前项目目录 ====================
  119. /**
  120. * String getObjectPath()
  121. * 参数: 无
  122. * 返回值: String - 当前项目目录路径
  123. */
  124. function demoGetObjectPath() {
  125.     print.log("【演示】runTime.getObjectPath 获取项目目录");
  126.    
  127.     try {
  128.         var projectPath = runTime.getObjectPath();
  129.         print.log("✓ 当前项目目录: " + projectPath);
  130.         
  131.         // 可以用于构建相对路径
  132.         var configPath = projectPath + "/config.json";
  133.         print.log("  配置文件路径: " + configPath);
  134.         
  135.     } catch (e) {
  136.         print.log("✗ 获取项目目录失败: " + e.message);
  137.     }
  138. }

  139. // ==================== 5. restart - 重启应用 ====================
  140. /**
  141. * void restart()
  142. * 参数: 无
  143. * 返回值: void
  144. * 说明: 重启应用,需要3秒
  145. */
  146. function demoRestart() {
  147.     print.log("【警告】runTime.restart 重启应用");
  148.     print.log("应用将在 3 秒后重启...");
  149.    
  150.     // 实际使用时直接调用即可
  151.     // runTime.restart();
  152.    
  153.     print.log(" 此处仅演示,未实际执行重启(避免中断演示流程)");
  154.     print.log("如需重启,请取消注释 runTime.restart() 调用");
  155. }

  156. // ==================== 6. stopAllRuning - 停止所有运行库 ====================
  157. /**
  158. * void stopAllRuning()
  159. * 参数: 无
  160. * 返回值: void
  161. * 说明: 停止所有后台运行的脚本和线程
  162. */
  163. function demoStopAllRunning() {
  164.     print.log("【警告】runTime.stopAllRuning 停止所有运行");
  165.    
  166.     // 先停止定时器和延时器
  167.     stopInterval();
  168.     stopTimeout();
  169.    
  170.     print.log("✓ 已停止所有定时任务");
  171.     print.log("⚠ runTime.stopAllRuning() 会停止所有后台运行的脚本和线程");
  172.     print.log("如需停止所有运行,请取消注释 runTime.stopAllRuning() 调用");
  173.    
  174.     // 实际使用时:
  175.     // runTime.stopAllRuning();
  176. }

  177. // ==================== 主演示流程 ====================
  178. function main() {
  179.     print.log("========================================");
  180.     print.log("AIWROK 运行时方法完整演示");
  181.     print.log("========================================");
  182.    
  183.     // 1. 获取项目目录
  184.     demoGetObjectPath();
  185.     sleep.second(秒=2);
  186.    
  187.     // 2. 演示 Import
  188.     demoImport();
  189.     sleep.second(秒=2);
  190.    
  191.     // 3. 启动循环执行
  192.     print.log("----------------------------------------");
  193.     startInterval();
  194.     sleep.second(秒=2);
  195.    
  196.     // 4. 启动延迟执行
  197.     startTimeout();
  198.     sleep.second(秒=2);
  199.    
  200.     // 5. 等待循环执行完成
  201.     print.log("等待循环执行完成...");
  202.     sleep.second(秒=6); // 等待 6 秒让循环执行完毕
  203.     sleep.second(秒=2);
  204.    
  205.     // 6. 演示重启功能(不实际执行)
  206.     print.log("----------------------------------------");
  207.     demoRestart();
  208.     sleep.second(秒=2);
  209.    
  210.     // 7. 演示停止所有运行(不实际执行)
  211.     print.log("----------------------------------------");
  212.     demoStopAllRunning();
  213.     sleep.second(秒=2);
  214.    
  215.     print.log("========================================");
  216.     print.log("演示完成!");
  217.     print.log("========================================");
  218. }

  219. // ==================== 工具函数 ====================

  220. /**
  221. * 手动触发一次循环执行(用于测试)
  222. */
  223. function triggerInterval() {
  224.     if (intervalId === null) {
  225.         startInterval();
  226.     } else {
  227.         print.log("⚠ setInterval 已在运行中");
  228.     }
  229. }

  230. /**
  231. * 立即停止所有定时任务
  232. */
  233. function stopAllTasks() {
  234.     stopInterval();
  235.     stopTimeout();
  236.     print.log("✓ 所有定时任务已停止");
  237. }

  238. /**
  239. * 查看当前运行状态
  240. */
  241. function checkStatus() {
  242.     print.log("【运行状态】");
  243.     print.log("  setInterval: " + (intervalId !== null ? "运行中" : "已停止"));
  244.     print.log("  setTimeout: " + (timeoutId !== null ? "运行中" : "已停止/已完成"));
  245.     print.log("  执行次数: " + executionCount + "/" + maxExecutions);
  246. }

  247. // ==================== 执行入口 ====================
  248. // 自动运行完整演示
  249. main();

  250. // 手动调用各个函数进行测试(可选)
  251. demoGetObjectPath();
  252. triggerInterval();
  253. checkStatus();
  254. stopAllTasks();
复制代码







欢迎光临 B2B网络软件 (http://bbs.niubt.cn/) Powered by Discuz! X3.2