tasker 中文文档 下载 App

Tasker Perform Task 子任务调用与 Stop Return 终止控制 实现函数化复用

函数化复用的需求

没有 Perform Task 时,如果两个 Profile 需要相同的动作序列,你只能在每个 Profile 的 Task 里各写一遍——复制粘贴、改一处漏一处。

Perform Task 解决了这个问题:它让一个 Task 调用另一个 Task 作为"子任务",支持传递参数和接收返回值。Tasker 的 Task 从"串行命令队列"进化成了可以互相调用的函数体系。

Perform Task 基础

基本用法

Perform Task → 目标 Task 名

执行效果:

  1. 暂停当前 Task
  2. 完整执行目标 Task(从头跑到尾)
  3. 返回当前 Task,从断点继续

传参

Perform Task 可以向目标 Task 传递命名参数:

Perform Task → 目标 Task 名
  参数1:名字 = 值
  参数2:名字 = 值

在目标 Task 里,参数以局部变量的形式自动可用:

返回值

被调用 Task 可以通过 Return 动作为调用方返回一个值:

# 被调用 Task 里
Return → "处理完成"(或变量值)

# 调用方里
Perform Task → 子任务 → 返回值存入 %ReturnValue

Perform Task 实战:构建可复用函数库

示例一:统一的"省电模式"

多个 Profile 都需要"打开省电模式"的逻辑:

# 定义通用子任务:Toggle Power Save
Task:Toggle Power Save
  参数:%Action = "On" 或 "Off"

  If → %Action = On
    Wifi → Off
    Bluetooth → Off
    Display Brightness → 最低
    Screen Timeout → 15秒
    Do Not Disturb → 完全静默
  Else
    Wifi → On
    Bluetooth → On
    Display Brightness → Auto
    Screen Timeout → 2分钟
    Do Not Disturb → Off
  Endif
# Profile A:晚上自动省电
Enter Task:
  Perform Task → Toggle Power Save → Action = On

# Profile B:电量低于 20% 省电
Enter Task:
  Perform Task → Toggle Power Save → Action = On

# Profile C:充电时恢复
Enter Task:
  Perform Task → Toggle Power Save → Action = Off

示例二:文件处理流水线

# 子任务:Process Single File
Task:ProcessFile
  参数:%FilePath

  1. Read File → %FilePath → %FileContent
  2. If → %FileContent 匹配某种格式
        # 处理逻辑
        Return → 成功
     Else
        Return → 格式错误
     Endif
# 主任务:批量处理
Task:BatchProcess
  1. List Files → /sdcard/data/ → %FileList
  2. For → %F In → %FileList1, %FileList2, ...
     Perform Task → ProcessFile → FilePath = %F → 返回值 %Result
     If → %Result != 成功
       Notify → "%F 处理失败"
     Endif
  End For

Stop vs Return vs Goto Return

这三个 Action 都涉及"结束 Task 执行",但含义完全不同:

Action效果典型场景
Stop立即终止当前 Task,不执行剩余任何 Action紧急退出、条件不满足时放弃
Return从被调用的子任务返回到调用方(只在 Perform Task 调用的 Task 里有意义)子任务执行完毕后返回结果
Goto Return跳到 Task 里预先标记的 Return 标签(灵活终止)需要"跳到结尾做清理工作再退出"

Stop 的威力与风险

Stop 非常强大,但也要小心:

推荐:子任务里用 Return,主任务里用 Stop。

Return 的正确用法

# 调用方
Perform Task → DoWork → 返回值 %Result
# Perform Task 会暂停在这里,等 DoWork 返回

# 子任务 DoWork
  1. If → 参数缺失
        Return → 参数错误(直接返回,不执行后续 Action)
     Endif
  2. 正常逻辑...
  3. Return → 成功(正常返回)

Goto Return:最灵活的终止方式

Goto Return 让你可以在 Task 的某个位置做清理动作再退出:

Task:下载并解压文件
  1. HTTP Request → 下载到临时目录
  2. If → %HTTPCODE != 200
        Notify → "下载失败"
        Goto → Cleanup(跳到清理标签)
     Endif
  3. Unzip → 解压到目标目录
  4. If → 解压失败
        Notify → "解压失败"
        Goto → Cleanup
     Endif
  5. Notify → "完成"

Label → Cleanup
  6. Delete File → 删除临时文件(无论成功失败都执行清理)

进阶:递归调用

Tasker 的 Perform Task 可以递归——Task A 调用 Task B,B 又调用 A。但要小心死循环:

# 危险的递归
Task A → Perform Task B
Task B → Perform Task A(没有退出条件)

正确的递归需要明确的退出条件(通常通过变量递减实现)。

子任务的可见性

调试 Perform Task