更新记录

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 微信登录、分享、支付、小程序与客服 查看插件

隐私、权限声明

1. 本插件需要申请的系统权限列表:

前台服务、保活证据会话、自愈后复测计划、自愈证据聚合、自愈闭环证据、恢复证据快照、持久化事件时间线、交付证据归档包导出、交付证据文件导出、交付报告一键复制、发布包质量门禁、插件市场发布体检报告、前台服务合规体检、媒体播放前台服务、通知、通知通道体检、通知动作广播、通知运行时权限、精确闹钟、JobScheduler 兜底守护、BIND_JOB_SERVICE、电池优化忽略、唤醒锁、WiFi 锁、Android onDestroy 服务销毁自恢复、Android onTaskRemoved 任务划掉恢复、stopWithTask=false 前台服务配置、iOS 后台套件、iOS UIBackgroundModes、一键终极体检报告、保活巡航守护、厂商 ROM 设置验收审计与下一项设置导航、交付验收计划、售后/交付支持报告、自定义基座完整性报告、事件时间线与恢复审计、长跑观测报告、保活验收报告、售后诊断包、一键自愈守护、鸿蒙后台套件、一键保活套件、保活生存力测试、保活证据包、后台任务守护与执行结果回执、保活准备度报告、一键保活策略预设、静音音频保活策略、稳定后台任务定时器、Harmony 后台运行配置指引、厂商 ROM 保活指引、开机/屏幕唤醒自恢复广播、通知点击与运行态事件广播按平台配置

2. 本插件采集的数据、发送的服务器地址、以及数据用途说明:

无

3. 本插件是否包含广告,如包含需详细说明广告表达方式、展示频率:

无