更新记录
1.1.0(2026-09-06)
- 归并本轮 uni-app x Android 修复:兼容对象序列化保留业务字段与回调,补齐 Android 入口公开 API 投影和示例选项类型;版本号保持
1.1.0,发布时与本版本内容一起提交。 - 2026-09-05 修复 Android UTS 兼容参数和单例转发的类型错误,保留各公开方法的参数与回调合同;修复 uni-app x 示例参数适配,完整传递预设启动、定时周期和事件筛选选项。
- Android 前台服务改为由项目按真实业务显式选择
dataSync或mediaPlayback;未选择时只保留最佳努力运行态,不会把通用保活伪装成某一种前台服务。历史的其他服务类型值不再启用前台服务。 - 看门狗和稳定定时器改为低频、非精确系统兜底,不再申请精确闹钟权限;原有查询与请求入口保留,但不会再跳转精确闹钟授权页。
- 修复主动取消注册后遗留闹钟和默认策略可能再次恢复的问题;屏幕状态监听改为运行期间动态注册,停止或取消注册后自动释放。
- iOS 与 Harmony 后台报告改为如实反映“进程内心跳观测”;不再将配置样板或人工确认标记为后台验收通过。iOS 不再为保活目的声明后台模式。
- 升级后需要重新制作并安装 Android 自定义基座;iOS、Harmony 如有对应原生配置或业务处理器,也需要重新原生联编或重新打包后按真实业务路径复测。
1.0.4(2026-07-31)
- 将真机回归清单迁出插件发布目录,并移除客户 README 的“当前版本”标题,避免内部验收资料进入市场包。
- 修复 uni-app x 示例日志样式在 HarmonyOS 编译时使用不受支持的
white-space: pre-wrap导致构建失败的问题,改用平台支持的normal并保留自动换行。 - 同步
package.json、uni_modules.json与多端运行诊断中的pluginVersion;公开 API、保活策略和回调语义不变。 - 示例样式修复本身不要求新基座;如需运行诊断显示新版本号,App 端仍需重新原生联编或制作匹配自定义基座。
1.0.3(2026-07-22)
- 修复 HBuilderX 5.15 更严格类型检查下,公共
RegisterOptions/KeepAliveBaseOptions直接传入 AndroidAndroidBaseCallbackOptions触发的四处error17。 - Android 根入口改为显式构造平台 options 并完整复制 success/fail/complete 与注册配置,避免用运行时类强转掩盖编译错误;公共 API 和保活状态机保持不变。
- 同步 package、README、Android
PLUGIN_VERSION及多端降级报告到1.0.3。升级后需重新原生联编或重新打 Android 自定义基座。
平台兼容性
uni-app(4.84)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | √ | √ | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | √ | - | - | - | - | - | - | - | - | - | - |
uni-app x(4.84)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ |
lizhao-app-keepalive
lizhao-app-keepalive 用于让需要持续处理业务的应用,在进入后台后更稳定地保持运行状态、记录业务心跳,并按约定执行周期任务。
它能帮你做什么
| 你的业务需求 | 插件提供的帮助 |
|---|---|
| 设备、订单或消息连接需要持续关注 | 记录连接心跳和运行事件,便于发现中断。 |
| 应用在后台仍要做周期性工作 | 按设定间隔触发同步、巡检、上报等业务任务。 |
| 希望用户能看到应用仍在工作 | 支持配置运行提示和常用操作入口。 |
| 不确定当前设备是否适合开启保活 | 提供状态、权限和系统限制检查,返回下一步建议。 |
| 需要根据不同业务选择保活强度 | 提供均衡、强保活、媒体和任务等预设。 |
适用场景
- 设备管理:持续关注设备在线状态,发现连接中断后及时处理。
- 消息与客服:在后台保持业务心跳,避免长时间无状态反馈。
- 订单与工单:定时同步待处理数据,并记录每次执行结果。
- 巡检与上报:按照固定节奏触发巡检、告警检查或状态上报。
- 运营排查:查看当前运行状态,定位通知、系统限制或设置项带来的影响。
开始使用
1. 下载并导入
在 DCloud 插件市场搜索 lizhao-app-keepalive,下载后导入 uni-app 或 uni-app x 项目。
在需要调用的页面从插件根目录导入:
import * as keepAlive from '@/uni_modules/lizhao-app-keepalive'
后续示例都默认已完成上述导入。
2. 先确认当前平台能力
不同平台允许的后台能力不同。首次接入时先查询能力,再决定是否启动对应业务。
keepAlive.getCapabilities({
success(capabilities) {
console.log('当前平台:', capabilities.platform)
console.log('是否支持后台保活:', capabilities.keepAlive)
console.log('受限原因:', capabilities.restrictedReason)
},
fail(err) {
console.error('能力查询失败:', err)
}
})
3. 启动基础保活
先注册,再启动。下面只设置最常用的心跳间隔和运行提示操作,其余配置会使用插件默认值。
keepAlive.register({
config: {
heartbeatIntervalMs: 15000,
notificationActionsEnabled: true
},
success() {
keepAlive.startKeepAlive({
success(status) {
console.log('保活已启动:', status.running)
},
fail(err) {
console.error('启动保活失败:', err)
}
})
},
fail(err) {
console.error('注册保活失败:', err)
}
})
业务不再需要后台运行时,主动停止并取消注册:
keepAlive.stopKeepAlive({
success() {
keepAlive.unregister({
success() {
console.log('保活已停止')
}
})
}
})
按业务模块接入
模块一:连接守护
适合设备连接、消息连接或页面轮询。业务在收到连接成功、消息到达或关键操作完成时发送一次心跳;运行事件可以用于更新页面状态或写入业务日志。
keepAlive.setOnKeepAliveEvent({
listener(event) {
console.log('运行事件:', event.name)
}
})
function reportDeviceOnline(deviceId: string) {
keepAlive.sendHeartbeat({
tag: 'device-online',
payload: { deviceId },
success(result) {
console.log('心跳已记录:', result)
}
})
}
模块二:周期任务
适合订单同步、设备巡检、待办刷新等需要定时执行的业务。插件负责按间隔通知业务;业务完成后回传成功或失败结果。
keepAlive.setOnKeepAliveTaskListener({
listener(event) {
console.log('开始执行任务:', event.taskId)
// 在这里执行自己的同步、巡检或上报业务。
keepAlive.reportKeepAliveTaskResult({
taskId: event.taskId,
result: 'success',
message: '订单同步完成'
})
}
})
keepAlive.registerKeepAliveTask({
task: {
taskId: 'sync-order',
title: '订单同步',
intervalMs: 30000,
runImmediately: true
},
success(tasks) {
console.log('已注册任务:', tasks)
},
fail(err) {
console.error('任务注册失败:', err)
}
})
模块三:策略与运行提示
适合不想逐项配置的项目。先选择贴近业务的预设,再按需修改通知文字或其他配置。
keepAlive.applyKeepAlivePreset({
presetId: 'balanced',
startImmediately: true,
success(result) {
console.log('已应用策略:', result.presetId)
},
fail(err) {
console.error('策略应用失败:', err)
}
})
keepAlive.setNotice({
title: '设备服务运行中',
content: '正在保持设备连接',
success() {
console.log('运行提示已更新')
}
})
模块四:状态检查与问题提示
适合在设置页或运维页展示当前状态。报告会给出是否可用、当前得分和建议处理项;业务可以直接把建议展示给用户或记录到日志。
keepAlive.getKeepAliveReadinessReport({
success(report) {
if (report.ready) {
console.log('当前可以正常使用保活')
return
}
console.log('需要处理:', report.nextSteps)
},
fail(err) {
console.error('状态检查失败:', err)
}
})
keepAlive.getKeepAliveHealthReport({
success(report) {
console.log('当前状态:', report.level)
console.log('建议:', report.recommendations)
}
})
模块五:定时心跳
适合只需要按固定节奏上报状态、无需注册完整业务任务的场景。先监听定时事件,再在事件中发送业务心跳。
keepAlive.setOnStableTimerListener({
listener(event) {
keepAlive.sendHeartbeat({
tag: 'periodic-report',
payload: { tick: event.tick },
success() {
console.log('本次状态已上报')
}
})
}
})
keepAlive.startStableTimer({
intervalMs: 60000,
tag: 'periodic-report',
success() {
console.log('定时心跳已启动')
}
})
不需要继续上报时调用:
keepAlive.stopStableTimer({
success() {
console.log('定时心跳已停止')
}
})
按用途找功能
| 模块 | 什么时候使用 | 常用方法 | 你会得到什么 |
|---|---|---|---|
| 启动与停止 | 应用进入需要持续处理业务的页面,或业务结束时 | register、startKeepAlive、stopKeepAlive、unregister |
当前是否已注册、是否正在运行。 |
| 连接状态 | 设备、消息或长连接有关键状态变化时 | sendHeartbeat、setOnKeepAliveEvent、checkAlive |
最近心跳和运行事件。 |
| 周期任务 | 要定时同步、巡检、上报或补偿业务时 | registerKeepAliveTask、setOnKeepAliveTaskListener、reportKeepAliveTaskResult |
任务触发、成功次数、失败次数和下次执行时间。 |
| 定时心跳 | 只需要按间隔上报状态时 | startStableTimer、setOnStableTimerListener、stopStableTimer |
定时触发事件和当前定时状态。 |
| 策略选择 | 希望快速选择适合业务的运行方式时 | applyKeepAlivePreset、getKeepAlivePresetOptions、setConfig |
已应用的策略和当前配置。 |
| 运行提示 | 需要调整应用运行时的提示文案或操作入口时 | setNotice、setNotificationSoundEnabled、setNotificationVibrateEnabled |
更新后的运行提示设置。 |
| 状态检查 | 用户反馈后台不稳定,或需要在设置页显示建议时 | getKeepAliveReadinessReport、getKeepAliveHealthReport、getKeepAliveRestrictionStatus |
可用状态、风险项和下一步建议。 |
| 系统设置引导 | 需要帮助用户处理通知、电池或厂商设置时 | getKeepAlivePermissionStatus、getKeepAliveVendorGuide、openAutoStartSettings |
当前设置状态和可打开的系统入口。 |
| 运行记录 | 需要排查任务是否触发、服务是否中断时 | getStatus、getKeepAliveEventTimeline、getKeepAliveTaskStatuses |
运行状态、事件记录和任务列表。 |
| 自动处理 | 希望由插件按推荐策略恢复常用配置时 | applyKeepAliveSuite、autoHealKeepAlive、getKeepAliveAutoHealReport |
已执行动作和后续建议。 |
常用配置
只在确有业务需要时传入配置。下面列出首次接入最常用的字段。
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
config.heartbeatIntervalMs |
number | 否 | 自动心跳间隔,单位毫秒 | 15000 |
建议不小于 1000 |
config.autoStartOnBoot |
boolean | 否 | 应用重新启动后是否尝试恢复已启用的保活策略 | false |
true / false |
config.notificationActionsEnabled |
boolean | 否 | 是否在运行提示中提供常用操作 | true |
true / false |
config.wakeLockEnabled |
boolean | 否 | 需要持续处理业务时是否保持设备唤醒 | false |
true / false |
config.wifiLockEnabled |
boolean | 否 | 需要保持网络连接时是否启用 Wi-Fi 辅助 | false |
true / false |
config.powerMode |
string | 否 | 运行策略强度 | balanced |
balanced / performance / ultra |
支持平台
| 平台 | 是否支持 | 说明 |
|---|---|---|
| uni-app | 是 | 可在支持的客户端平台调用。 |
| uni-app x | 是 | 可在支持的客户端平台调用。 |
| Android | 是 | 提供完整的后台运行、任务和状态检查能力。 |
| iOS | 是 | 按系统允许的后台任务能力执行,不承诺长期常驻。 |
| Harmony | 是 | 提供受系统限制的后台运行与状态能力。 |
| Web | 是 | 返回轻量结果,不提供系统级后台常驻。 |
| 微信小程序 | 是 | 返回轻量结果,不提供系统级后台常驻。 |
| 支付宝小程序 | 是 | 返回轻量结果,不提供系统级后台常驻。 |
常见错误码
| 错误码 | 含义 | 说明 |
|---|---|---|
9013001 |
当前平台不支持该能力 | 先通过 getCapabilities 判断当前平台。 |
9013002 |
参数不合法 | 检查必填字段、任务 ID 和时间间隔。 |
9013003 |
服务未注册 | 先调用 register,再启动或配置服务。 |
9013004 |
服务已在运行 | 无需重复启动,直接查询状态即可。 |
9013005 |
服务未运行 | 先启动保活,再使用依赖运行状态的功能。 |
9013006 |
权限不足 | 根据返回的建议引导用户完成系统设置。 |
9013007 |
能力受限或不可用 | 当前设备或系统不允许该项能力。 |
9013008 |
系统调用失败 | 记录 err.details,结合当前状态再次判断。 |
9013009 |
电池优化策略拒绝 | 请用户在系统设置中确认对应选项。 |
9013010 |
唤醒锁不可用 | 降级处理当前业务,不要把它当作已启用。 |
9013011 |
设置页面不可达 | 提示用户手动进入应用设置页。 |
9013012 |
调用过于频繁 | 减少重复启动或短时间连续操作。 |
常见问题
可以保证应用永远不被系统停止吗?
不能。不同手机和系统对后台运行的限制不同。插件会明确返回当前状态和建议,但不承诺绕过系统或厂商限制。
应该选择哪种策略?
一般业务从 balanced 开始;对设备在线、消息连接或重要同步要求较高时,再评估 strong;只有明确的高强度业务需求才使用 ultra。
如何知道周期任务有没有执行?
使用 getKeepAliveTaskStatuses 查询任务状态,或在 setOnKeepAliveTaskListener 中记录每次触发和业务回执。
业务退出时要做什么?
不再需要后台处理时,按 stopKeepAlive、unregister 的顺序释放运行状态;不再需要定时心跳时,同时调用 stopStableTimer。
联系方式
信-微:l-z-1-8-7-1512-5421(-去掉,不这样写会被和谐)
作者系列 UTS 插件
以下为已在 DCloud 插件市场上架的作者系列 UTS 插件,可按业务场景组合使用。未列出的插件表示当前未确认公开市场页,后续上架后再补充。
| 插件 | 能力方向 | 插件市场 |
|---|---|---|
lizhao-nfc-pro |
NFC 标签读写、NDEF、IsoDep 与诊断 | 查看插件 |
lizhao-float-window |
悬浮窗、画中画、权限与诊断 | 查看插件 |
lizhao-device-id |
设备标识、隐私策略与诊断 | 查看插件 |
lizhao-scan-pro |
原生扫码、连续扫码、相册识别 | 查看插件 |
lizhao-choose-file |
原生文件选择、上传、进度与取消 | 查看插件 |
lizhao-bg-audio |
背景音频播放、队列、倍速与事件 | 查看插件 |
lizhao-smart-tts |
系统 TTS、云端合成、听书方案 | 查看插件 |
lizhao-share-plus |
系统分享、远程文件下载后分享 | 查看插件 |
lizhao-sqlite-pro |
原生 SQLite、迁移、备份与诊断 | 查看插件 |
lizhao-icon-pro |
SVG 图标组件、多主题与缓存 | 查看插件 |
lizhao-cast-screen |
DLNA 投屏、AirPlay 路由入口 | 查看插件 |
lizhao-call-kit |
电话、短信、通讯录原生能力 | 查看插件 |
lizhao-app-keepalive |
应用保活、唤醒、自愈与报告 | 查看插件 |
lizhao-doc-corrector |
文档扫描、矫正、增强与识别 | 查看插件 |
lizhao-emu-detect |
模拟器环境检测、风险评分与证据 | 查看插件 |
lizhao-gallery-pro |
相册媒体分页、筛选、缩略图与导出 | 查看插件 |
lizhao-video-thumb |
视频封面、批量取帧与 Base64 返回 | 查看插件 |
lizhao-ble |
BLE 扫描、连接、读写、通知与自动重连 | 查看插件 |
lizhao-sse-pro |
SSE、Line、JSONL 与 Raw 流式请求 | 查看插件 |
lizhao-pdf-pro |
PDF 阅读、签批、真实写回与页面处理 | 查看插件 |
lizhao-serial-port |
路径串口、USB 串口、多会话收发与诊断 | 查看插件 |
lizhao-wechat-kit |
微信登录、分享、支付、小程序与客服 | 查看插件 |
lizhao-video-editor |
视频裁剪、压缩、取帧与 FFmpeg/FFprobe | 查看插件 |
lizhao-vpn-pro |
企业 VPN、IKEv2、安全接入与脱敏诊断 | 查看插件 |

收藏人数:
购买源码授权版(
试用
赞赏(0)
下载 6486
赞赏 5
下载 12599704
赞赏 1949
赞赏
京公网安备:11010802035340号