更新记录
1.1.2(2026-10-29)
- 新增“基础保活 / 定时任务 / 系统设置”三个 Tab 示例,支持点击启动、停止,并查看真实本地文件写入、读回与任务执行结果。
- 修复 uni-app x Android Vapor 模式下接口参数转换异常导致查询和保活调用失败的问题。
- 修复 Android 持续监听回调的生命周期配置,保留定时器、任务与运行事件的后续回调。
- 修复 Web 降级入口的公开方法导出,以及 uni-app x Android 普通模式示例诊断模块的编译问题。
- 优化 uni-app 与 uni-app x 示例的操作分组、状态反馈和运行记录,按业务模块简化接入文档。
- 统一插件声明、示例报告与各平台运行诊断版本为 1.1.2;Android 升级后需重新制作并安装包含本插件的自定义基座。
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 端仍需重新原生联编或制作匹配自定义基座。
平台兼容性
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 为 Android 应用提供前台服务、定时任务和后台运行设置引导,支持 uni-app 与 uni-app x。打开示例即可点击体验,并看到实际文件记录与运行状态。
功能特色
| 你的业务需求 | 插件提供的帮助 |
|---|---|
| 设备、订单或消息连接需要持续关注 | 记录连接心跳和运行事件,便于发现中断。 |
| 应用在后台仍要做周期性工作 | 按设定间隔触发同步、巡检、上报等业务任务。 |
| 希望用户能看到应用仍在工作 | 支持配置运行提示和常用操作入口。 |
| 不确定当前设备是否适合开启保活 | 提供状态、权限和系统限制检查,返回下一步建议。 |
| 需要根据不同业务选择保活强度 | 提供均衡、强保活、媒体和任务等预设。 |
适合哪些场景
| 场景 | 使用方式 |
|---|---|
| 设备管理 | 持续关注设备在线状态,发现连接中断后及时处理。 |
| 消息与客服 | 在后台保持业务心跳,避免长时间无状态反馈。 |
| 订单与工单 | 定时同步待处理数据,并记录每次执行结果。 |
| 巡检与上报 | 按照固定节奏触发巡检、告警检查或状态上报。 |
| 运营排查 | 查看当前运行状态,定位通知、系统限制或设置项带来的影响。 |
下载与导入
在 DCloud 插件市场搜索 lizhao-app-keepalive,下载后导入 uni-app 或 uni-app x 项目。
在需要调用的页面从插件根目录导入:
import * as keepAlive from '@/uni_modules/lizhao-app-keepalive'
后续示例都默认已完成上述导入。
将对应示例页面加入项目的 pages.json,在包含本插件的 Android 自定义基座或正式包中打开:
| 项目 | 完整示例页面 |
|---|---|
| uni-app | uni_modules/lizhao-app-keepalive/example/uniapp/keepAlive.vue |
| uni-app x | uni_modules/lizhao-app-keepalive/example/uniappx/index.uvue |
示例分为 基础保活、定时任务、系统设置 三个 Tab。点击开始后会实际写入并读回本地记录,直接显示服务检查、心跳次数、任务结果;无需自备服务器。演示使用 dataSync 前台服务,每次最多运行 60 秒,时间到后在回调可执行时停止。需要先授权时打开系统设置 Tab;单项接口与完整日志在“更多功能”“运行记录”中。
从基础到进阶:按业务模块使用
代码片段放入对应宿主页面脚本或按钮方法;uni-app x 保留 UTS 类型,使用 javascript 标记仅用于市场语法着色。整页示例按其标注的 Vue 版本使用。
1. 先确认当前平台能力
不同平台允许的后台能力不同。首次接入时先查询能力,再决定是否启动对应业务。
keepAlive.getCapabilities({
success(capabilities) {
console.log('当前平台:', capabilities.platform)
console.log('是否支持后台保活:', capabilities.keepAlive)
console.log('受限原因:', capabilities.restrictedReason)
},
fail(err) {
console.error('能力查询失败:', err)
}
})
2. 启动基础保活
以正在处理本地文件或同步数据的 Android 业务为例,先注册,再用 setConfig 修改需要的字段,最后启动。register.config 要求完整配置对象,首次接入建议省略它。业务结束后应立即停止。
keepAlive.register({
success() {
keepAlive.setConfig({
config: {
foregroundServiceType: 'dataSync',
heartbeatIntervalMs: 5000,
notice: { title: '文件处理进行中', content: '正在处理应用数据' }
},
success() {
keepAlive.startKeepAlive({
success(status) {
console.log('运行状态:', status.running)
keepAlive.getKeepAliveForegroundServiceComplianceReport({
success(report) { console.log('前台服务检查:', report.summaryText) }
})
},
fail(err) { console.error('启动失败:', err); keepAlive.unregister({}) }
})
},
fail(err) { console.error('配置失败:', err); keepAlive.unregister({}) }
})
},
fail(err) {
console.error('注册保活失败:', err)
}
})
foregroundServiceType 默认是 none,仅注册、启动不会自动获得 Android 前台服务。请按实际业务选择服务类型;上例的 dataSync 用于数据处理期间,不用于无限期空转。系统可限制启动和运行时长。
业务不再需要后台运行时,主动停止并取消注册:
keepAlive.stopKeepAlive({
success() {
keepAlive.unregister({
success() {
console.log('保活已停止')
}
})
}
})
模块一:连接守护
适合设备连接、消息连接或页面轮询。业务在收到连接成功、消息到达或关键操作完成时记录一次心跳;运行事件可以用于更新页面状态或写入业务日志。sendHeartbeat 只更新插件本地计数和时间,不会创建连接、发送网络请求或自动重连。
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) {
try {
const record = Date.now().toString()
uni.setStorageSync('keepalive-demo-record', record)
if (uni.getStorageSync('keepalive-demo-record') != record) {
keepAlive.reportKeepAliveTaskResult({ taskId: event.taskId, result: 'failure', message: '本地记录读回不一致' })
return
}
keepAlive.reportKeepAliveTaskResult({ taskId: event.taskId, result: 'success', message: '本地记录写入并读回成功' })
} catch (error) {
keepAlive.reportKeepAliveTaskResult({ taskId: event.taskId, result: 'failure', message: '本地记录处理失败' })
}
}
})
keepAlive.registerKeepAliveTask({
task: {
taskId: 'local-record',
title: '本地记录',
intervalMs: 5000,
runImmediately: true
},
success(tasks) {
console.log('已注册任务:', tasks)
},
fail(err) {
console.error('任务注册失败:', err)
}
})
停止这个任务时调用 unregisterKeepAliveTask({ taskId: 'local-record' });页面卸载时解绑本页面设置的监听。网络业务请在请求真正成功或失败后再报告,不要在发出请求时就报告成功。
模块三:策略与运行提示
适合不想逐项配置的项目。先选择贴近业务的预设,再按需修改通知文字或其他配置。
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)
}
})
模块五:定时心跳
适合按固定节奏记录本地状态、无需注册完整业务任务的场景。先监听定时事件,再记录本地业务心跳。sendHeartbeat 只更新本地心跳计数和时间,不执行网络上报;需要向服务端上报时,由业务在事件中发起自己的网络请求。
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('定时心跳已停止')
}
})
API 用途速查
| 模块 | 适用业务 | 常用方法 | 使用结果 |
|---|---|---|---|
| 开始与结束 | 业务开始处理文件或数据,结束后释放服务 | register、setConfig、startKeepAlive、unregister |
注册状态、运行状态与配置 |
| 本地心跳 | 记录连接或处理活动 | sendHeartbeat、setOnTimerListener、getStatus |
计数、最近时间与定时回调 |
| 定时任务 | 定期处理数据并记录实际结果 | setOnKeepAliveTaskListener、registerKeepAliveTask、reportKeepAliveTaskResult |
任务回调及成功、失败记录 |
| 任务管理 | 查询或结束指定任务 | getKeepAliveTaskStatuses、unregisterKeepAliveTask |
任务状态、停止指定任务 |
| 通知设置 | 展示当前工作,检查通知是否可见 | setNotice、requestPostNotificationsPermission、openNotificationSettings |
通知文案、授权及系统设置入口 |
| 运行检查 | 区分进程内运行与前台服务状态 | getStatus、getKeepAliveForegroundServiceComplianceReport |
运行配置、服务风险与处理建议 |
| 系统设置 | 引导用户允许后台运行 | getKeepAlivePermissionStatus、openPowerManagementSettings、openAutoStartSettings |
当前权限和可到达的设置页 |
| 进阶策略 | 根据实际业务选择策略并查询状态 | applyKeepAlivePreset、getKeepAliveReadinessReport、getKeepAliveHealthReport |
策略配置、准备度与诊断建议 |
完整调用示例见页面各分类中的“更多功能”;公共参数类型见插件的 utssdk/interface.uts。
常用配置
只在确有业务需要时传入配置。下面列出首次接入最常用的字段。
| 参数 | 类型 | 必填 | 说明 | 默认值 | 可选参数 |
|---|---|---|---|---|---|
config.foregroundServiceType |
string | 否 | Android 前台服务类型,必须与当前实际业务一致 | none(不启动前台服务) |
如文件处理使用 dataSync;其他类型需满足相应系统条件 |
config.heartbeatIntervalMs |
number | 否 | 自动心跳间隔,单位毫秒 | Android/Harmony/Web/微信/支付宝:15000;iOS:20000 |
建议不小于 1000 |
config.autoStartOnBoot |
boolean | 否 | 应用重新启动后是否尝试恢复已启用的保活策略 | false |
true / false |
config.notificationActionsEnabled |
boolean | 否 | 是否在运行提示中提供常用操作 | Android:true;iOS/Harmony/Web/微信/支付宝:false |
true / false |
config.wakeLockEnabled |
boolean | 否 | 需要持续处理业务时是否保持设备唤醒 | false |
true / false |
config.wifiLockEnabled |
boolean | 否 | 需要保持网络连接时是否启用 Wi-Fi 辅助 | false |
true / false |
config.powerMode |
string | 否 | 运行策略强度 | balanced |
balanced / performance / ultra |
错误码说明
errSubject 为 lizhao-app-keepalive。保留原始错误码与错误说明,再按下表处理。
| 错误码 | 含义 | 说明 |
|---|---|---|
9013001 |
当前平台不支持该能力 | 先通过 getCapabilities 判断当前平台。 |
9013002 |
参数不合法 | 检查必填字段、任务 ID 和时间间隔。 |
9013003 |
服务未注册 | 先调用 register,再启动或配置服务。 |
9013004 |
服务已在运行 | 无需重复启动,直接查询状态即可。 |
9013005 |
服务未运行 | 先启动保活,再使用依赖运行状态的功能。 |
9013006 |
权限不足 | 根据返回的建议引导用户完成系统设置。 |
9013007 |
能力受限或不可用 | 当前设备或系统不允许该项能力。 |
9013008 |
系统调用失败 | 记录 err.details,结合当前状态再次判断。 |
9013009 |
电池优化策略拒绝 | 请用户在系统设置中确认对应选项。 |
9013010 |
唤醒锁不可用 | 降级处理当前业务,不要把它当作已启用。 |
9013011 |
设置页面不可达 | 提示用户手动进入应用设置页。 |
9013012 |
调用过于频繁 | 减少重复启动或短时间连续操作。 |
注意事项
App 首次接入或修改原生 UTS、权限、Manifest、后台服务配置后,需重新原生联编并安装匹配源码的自定义基座或正式包;Harmony 修改原生模块后需重建匹配 HAP。仅更新页面、wgt 或 appResource 不能替换旧包中的原生实现。
支持平台
| 平台 | 是否支持 | 说明 |
|---|---|---|
| uni-app | 是 | 可在支持的客户端平台调用。 |
| uni-app x | 是 | 可在支持的客户端平台调用。 |
| Android | 是 | 提供前台服务、任务回调及状态检查;后台时长与调度频率受系统和厂商限制。 |
| iOS | 有限 | 当前实现提供进程内定时与状态接口,不能据此承诺应用挂起后的持续执行。 |
| Harmony | 有限 | 当前实现提供兼容状态和配置指引,以 getCapabilities 返回的具体能力为准。 |
| Web | 是 | 返回轻量结果,不提供系统级后台常驻。 |
| 微信小程序 | 是 | 返回轻量结果,不提供系统级后台常驻。 |
| 支付宝小程序 | 是 | 返回轻量结果,不提供系统级后台常驻。 |
常见问题
可以保证应用永远不被系统停止吗?
不能。不同手机和系统对后台运行的限制不同。插件会明确返回当前状态和建议,但不承诺绕过系统或厂商限制。
应该选择哪种策略?
一般业务从 balanced 开始;对设备在线、消息连接或重要同步要求较高时,再评估 strong;只有明确的高强度业务需求才使用 ultra。
如何知道周期任务有没有执行?
使用 getKeepAliveTaskStatuses 查询任务状态,或在 setOnKeepAliveTaskListener 中记录每次触发和业务回执。
业务退出时要做什么?
不再需要后台处理时,按 stopKeepAlive、unregister 的顺序释放运行状态;不再需要定时心跳时,同时调用 stopStableTimer。
联系作者
信-微:l-z-1-8-7-1512-5421(-去掉,不这样写会被和谐)
作者系列 UTS 插件
以下为作者已上架的 UTS 插件,详情见各市场页面或作者主页。
| 插件 | 能力方向 | 插件市场 |
|---|---|---|
lizhao-app-keepalive |
应用保活、唤醒、自愈与报告 | 查看插件 |
lizhao-bg-audio |
背景音频播放、队列、倍速与事件 | 查看插件 |
lizhao-ble |
BLE 扫描、连接、读写、通知与自动重连 | 查看插件 |
lizhao-call-kit |
电话、短信、通讯录原生能力 | 查看插件 |
lizhao-camera-pro |
原生相机、拍照录像、水印与媒体保存 | 查看插件 |
lizhao-cast-screen |
DLNA 投屏、AirPlay 路由入口 | 查看插件 |
lizhao-choose-file |
原生文件选择、上传、进度与取消 | 查看插件 |
lizhao-device-id |
设备标识、隐私策略与诊断 | 查看插件 |
lizhao-doc-corrector |
文档扫描、矫正、增强与识别 | 查看插件 |
lizhao-emu-detect |
模拟器环境检测、风险评分与证据 | 查看插件 |
lizhao-float-window |
悬浮窗、画中画、权限与诊断 | 查看插件 |
lizhao-gallery-pro |
相册媒体分页、筛选、缩略图与导出 | 查看插件 |
lizhao-hce-card |
NFC 虚拟卡、APDU 交互与 NDEF 标签模拟 | 查看插件 |
lizhao-health |
健康数据授权、查询、统计与写入 | 查看插件 |
lizhao-http-server |
本地 HTTP 服务、文件传输与实时通信 | 查看插件 |
lizhao-icon-pro |
SVG 图标组件、多主题与缓存 | 查看插件 |
lizhao-id-photo |
证件照制作、尺寸换算、换底色与模板换装 | 查看插件 |
lizhao-img-eraser |
图片去水印、局部修复与原生编辑器 | 查看插件 |
lizhao-live-activity |
实时活动、系统胶囊与普通通知降级 | 查看插件 |
lizhao-nfc-pro |
NFC 标签读写、NDEF、IsoDep 与诊断 | 查看插件 |
lizhao-notify-pro |
本地通知、点击动作、进度与定时提醒 | 查看插件 |
lizhao-novel-reader |
原生小说阅读、仿真翻页与段落评论 | 查看插件 |
lizhao-office-view |
Office 与 PDF 文件预览、进度与缓存管理 | 查看插件 |
lizhao-pdf-pro |
PDF 阅读、签批、真实写回与页面处理 | 查看插件 |
lizhao-scan-pro |
原生扫码、连续扫码、相册识别 | 查看插件 |
lizhao-serial-port |
路径串口、USB 串口、多会话收发与诊断 | 查看插件 |
lizhao-share-plus |
系统分享、远程文件下载后分享 | 查看插件 |
lizhao-smart-tts |
系统 TTS、云端合成、听书方案 | 查看插件 |
lizhao-sqlite-pro |
原生 SQLite、迁移、备份与诊断 | 查看插件 |
lizhao-sse-pro |
SSE、Line、JSONL 与 Raw 流式请求 | 查看插件 |
lizhao-tcp-pro |
TCP 客户端、服务端、多连接与诊断 | 查看插件 |
lizhao-usb-storage |
U 盘、移动硬盘文件浏览、读写与批量复制 | 查看插件 |
lizhao-video-editor |
视频裁剪、压缩、取帧与 FFmpeg/FFprobe | 查看插件 |
lizhao-video-feed |
短视频上下滑、短剧选集与分页加载 | 查看插件 |
lizhao-video-player |
原生视频播放器、清晰度与播放交互 | 查看插件 |
lizhao-video-thumb |
视频封面、批量取帧与 Base64 返回 | 查看插件 |
lizhao-vpn-pro |
企业 VPN、IKEv2、安全接入与脱敏诊断 | 查看插件 |
lizhao-wechat-kit |
微信登录、分享、支付、小程序与客服 | 查看插件 |

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