App Inventor 2 后台任务与多线程教程

覆盖:计时器、异步任务、后台服务、心跳保活

一、计时器

1.1 简单定时

当 计时器1.计时 时
  设置 标签_时间.文本 = 获取毫秒数(现在)

1.2 倒计时

初始化全局变量 倒计时秒 = 60

当 按钮_开始.被点击 时
  设置 全局变量 倒计时秒 = 60
  设置 计时器1.启用计时 = 真
  设置 计时器1.计时间隔 = 1000

当 计时器1.计时 时
  设置 全局变量 倒计时秒 = 全局变量 倒计时秒 - 1
  设置 标签_倒计时.文本 = 全局变量 倒计时秒
  
  如果 全局变量 倒计时秒 <= 0 则
    设置 计时器1.启用计时 = 假
    调用 对话框1.显示消息对话框("时间到!", "提示", "确定")

二、异步任务

2.1 模拟异步

当 按钮_异步.被点击 时
  设置 标签_状态.文本 = "处理中..."
  
  // 模拟耗时操作
  当 计时器_异步.计时 时
    设置 计时器_异步.启用计时 = 假
    设置 标签_状态.文本 = "完成!"

三、后台服务

3.1 保持运行

当 Screen1.初始化 时
  调用 计时器_心跳.启用计时 = 真
  设置 计时器_心跳.计时间隔 = 60000  // 1分钟

当 计时器_心跳.计时 时
  // 发送心跳到服务器
  设置 Web客户端1.URL = "https://api.example.com/heartbeat"
  调用 Web客户端1.发送GET请求()

四、定时任务

4.1 整点报时

初始化全局变量 上次整点 = 0

当 计时器_整点.计时 时
  初始化局部变量 当前小时 = 取文本左侧(取文本右侧(获取毫秒数(现在), 13), 2)
  
  如果 当前小时 ≠ 全局变量 上次整点 且 当前小时 ≠ "00" 则
    设置 全局变量 上次整点 = 当前小时
    调用 手机震动器1.震动(500)
    调用 通知栏1.显示通知("整点报时", "现在是 " + 当前小时 + " 点")

五、网络请求

5.1 带超时

定义 请求带超时(URL, 超时毫秒)
  设置 计时器_超时.计时间隔 = 超时毫秒
  设置 计时器_超时.启用计时 = 真
  调用 Web客户端1.发送GET请求(URL)

当 Web客户端1.获得文本 时(URL, 响应码, 响应类型, 内容)
  设置 计时器_超时.启用计时 = 假
  设置 标签_结果.文本 = 内容

当 计时器_超时.计时 时
  设置 计时器_超时.启用计时 = 假
  调用 对话框1.显示消息对话框("请求超时", "错误", "确定")

六、常见问题

Q1:计时器不准?

系统休眠会影响计时器精度

Q2:后台被杀?

Android 8+需要前台服务
文档版本:2026.03 | 作者:App Inventor 2 中文网 www.fun123.cn

参考资料与版权声明

原文来源

版权声明

本文档基于 MIT App Inventor 官方文档及社区资源整理,版权归原作者所有:
  • MIT App Inventor 官方文档采用 CC BY-SA 4.0 授权
  • MIT App Inventor Community 帖子版权归原作者所有
本文档由 ai2claw 🐝 整理,仅供学习参考,如有侵权请联系删除。