Thanox 情景模式应用事件 Facts:安装、切换、清理、启停
Facts 是什么
Facts(事实)是 Thanox 在系统运行过程中捕获并发布的事件参数。当某个事件发生时,Thanox Framework 层会把对应的 facts 注入到规则引擎中,规则的 condition 条件就是通过判断这些 facts 来决定是否触发。
本文整理与应用生命周期相关的 facts——这是最常用的一组。
应用安装 / 卸载 / 更新
| Facts 参数 | 类型 | 含义 |
|---|---|---|
pkgAdded | Boolean | 新应用已安装 |
pkgRemoved | Boolean | 应用被卸载 |
pkgUpdated | Boolean | 应用已更新 |
pkgName | String | 被操作的应用包名 |
条件示例
# 任何应用安装时触发
pkgAdded == true
# 微信安装时触发
pkgAdded == true && pkgName == "com.tencent.mm"
动作中使用
"actions": [
"ui.showShortToast(pkgName);"
]
应用切换(前后台变化)
| Facts 参数 | 类型 | 含义 |
|---|---|---|
frontPkgChanged | Boolean | 前台应用已切换 |
from | String | 从哪个应用切换离开(包名) |
to | String | 切换到哪个应用(包名) |
条件示例
# 前台应用切换了
frontPkgChanged == true
# 微信回到后台了(从微信切走了)
frontPkgChanged == true && from == "com.tencent.mm"
# 切换到某特定 app 了
frontPkgChanged == true && to == "com.example.app"
任务清理(从最近任务移除)
| Facts 参数 | 类型 | 含义 |
|---|---|---|
taskRemoved | Boolean | 某个应用的最近任务被移除 |
pkgName | String | 被移除任务的应用包名 |
实战示例
当微信被从最近任务移除时,自动杀进程 + 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 参数 | 类型 | 含义 |
|---|---|---|
activityCreated | Boolean | Activity 已创建 |
componentNameAsString | String | Activity 组件全名(Thanox 浮窗显示的就是这个) |
componentNameAsShortString | String | Activity 组件短名(包名/.活动名) |
componentName | ComponentName | Activity 组件对象(完整类型) |
pkgName | String | 应用包名 |
Activity Resumed(显示可交互)
| Facts 参数 | 类型 | 含义 |
|---|---|---|
activityResumed | Boolean | Activity 已显示可交互 |
componentNameAsString | String | Activity 组件全名 |
componentNameAsShortString | String | Activity 组件短名 |
componentName | ComponentName | Activity 组件对象 |
pkgName | String | 应用包名 |
Activity Changed(前台 Activity 变化)
| Facts 参数 | 类型 | 含义 |
|---|---|---|
frontActivityChanged | Boolean | 前台 Activity 已变化 |
fromActivity | ComponentName | 离开的 Activity |
toActivity | ComponentName | 新前台 Activity |
Activity 生命周期提示
正常的 Activity 生命周期顺序:
Created → Resumed → Paused → Destroyed
注意:如果一个 Resumed 的 Activity 被其他 Activity 临时覆盖(比如支付宝支付弹出来盖在微信上),它会走:
Resumed → Paused → Resumed(不会重新 Created)
应用停止运行(被杀)
| Facts 参数 | 类型 | 含义 |
|---|---|---|
pkgKilled | Boolean | 某个应用被杀死 |
pkgName | String | 被杀的应用包名 |
可以用来在某个关键应用被杀时弹出提醒。
Facts 参数在条件和动作中的传递
Facts 参数的一个强大特性:同一个 facts 参数可以在 condition 里判断,然后在 action 里直接使用。
比如上文中 taskRemoved 示例:
- condition 用
pkgName == "com.tencent.mm"做条件判断 - action 里直接用
killer.killPackage(pkgName)——此时pkgName已经是 "com.tencent.mm"
这样你就不用在 action 里再硬编码一次包名了。