Thanox 中文文档 下载 App

Thanox 情景模式应用事件 Facts:安装、切换、清理、启停

Facts 是什么

Facts(事实)是 Thanox 在系统运行过程中捕获并发布的事件参数。当某个事件发生时,Thanox Framework 层会把对应的 facts 注入到规则引擎中,规则的 condition 条件就是通过判断这些 facts 来决定是否触发。

本文整理与应用生命周期相关的 facts——这是最常用的一组。

应用安装 / 卸载 / 更新

Facts 参数类型含义
pkgAddedBoolean新应用已安装
pkgRemovedBoolean应用被卸载
pkgUpdatedBoolean应用已更新
pkgNameString被操作的应用包名

条件示例

# 任何应用安装时触发
pkgAdded == true

# 微信安装时触发
pkgAdded == true && pkgName == "com.tencent.mm"

动作中使用

"actions": [
  "ui.showShortToast(pkgName);"
]

应用切换(前后台变化)

Facts 参数类型含义
frontPkgChangedBoolean前台应用已切换
fromString从哪个应用切换离开(包名)
toString切换到哪个应用(包名)

条件示例

# 前台应用切换了
frontPkgChanged == true

# 微信回到后台了(从微信切走了)
frontPkgChanged == true && from == "com.tencent.mm"

# 切换到某特定 app 了
frontPkgChanged == true && to == "com.example.app"

任务清理(从最近任务移除)

Facts 参数类型含义
taskRemovedBoolean某个应用的最近任务被移除
pkgNameString被移除任务的应用包名

实战示例

当微信被从最近任务移除时,自动杀进程 + Toast 提示:

[
  {
    "name": "Kill WeChat On Task Remove",
    "description": "微信任务移除时杀进程",
    "priority": 2,
    "condition": "taskRemoved == true && pkgName == \"com.tencent.mm\"",
    "actions": [
      "ui.showShortToast(\"正在杀死微信\");",
      "killer.killPackage(pkgName);"
    ]
  }
]

Activity 生命周期

Thanox 能精细监听 Activity 的每个阶段:

Activity Created(创建完成)

Facts 参数类型含义
activityCreatedBooleanActivity 已创建
componentNameAsStringStringActivity 组件全名(Thanox 浮窗显示的就是这个)
componentNameAsShortStringStringActivity 组件短名(包名/.活动名)
componentNameComponentNameActivity 组件对象(完整类型)
pkgNameString应用包名

Activity Resumed(显示可交互)

Facts 参数类型含义
activityResumedBooleanActivity 已显示可交互
componentNameAsStringStringActivity 组件全名
componentNameAsShortStringStringActivity 组件短名
componentNameComponentNameActivity 组件对象
pkgNameString应用包名

Activity Changed(前台 Activity 变化)

Facts 参数类型含义
frontActivityChangedBoolean前台 Activity 已变化
fromActivityComponentName离开的 Activity
toActivityComponentName新前台 Activity

Activity 生命周期提示

正常的 Activity 生命周期顺序:

Created → Resumed → Paused → Destroyed

注意:如果一个 Resumed 的 Activity 被其他 Activity 临时覆盖(比如支付宝支付弹出来盖在微信上),它会走:

Resumed → Paused → Resumed(不会重新 Created)

应用停止运行(被杀)

Facts 参数类型含义
pkgKilledBoolean某个应用被杀死
pkgNameString被杀的应用包名

可以用来在某个关键应用被杀时弹出提醒。


Facts 参数在条件和动作中的传递

Facts 参数的一个强大特性:同一个 facts 参数可以在 condition 里判断,然后在 action 里直接使用。

比如上文中 taskRemoved 示例:

这样你就不用在 action 里再硬编码一次包名了。