HarmonyOS 鸿蒙Next中当应用处于前台时,重启手机,重启后,获取设备使用信息统计接口:usageStatistics.queryBundleEvents没有该应用的结束事件

HarmonyOS 鸿蒙Next中当应用处于前台时,重启手机,重启后,获取设备使用信息统计接口:usageStatistics.queryBundleEvents没有该应用的结束事件

当应用处于前台时,重启手机,重启后,通过固定的开始、结束时间,调用获取设备使用信息统计接口:usageStatistics.queryBundleEvents查询应用事件信息,没有查到应用的结束事件。

期望: 期望在设备关机的时候能将处于前台的应用的应用事件写入usageStatistics中,并在查询时返回该条数据

5 回复

您好,为了更快速解决您的问题,并且吸引更多用户一同参与您问题的解答与讨论,建议您补全如下信息:

补全复现代码(如最小复现demo),让参与用户更快速复现您的问题;

补全版本信息(如:开发工具、手机系统/api语言版本信息),让参与用户更精准定位您的问题;

更多提问技巧,请参考:《提问小技巧:让解答更高效》

更多关于HarmonyOS 鸿蒙Next中当应用处于前台时,重启手机,重启后,获取设备使用信息统计接口:usageStatistics.queryBundleEvents没有该应用的结束事件的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


usageStatistics.queryBundleEvents这个不是系统应用才能使用的接口吗,你们的项目咋能使用的? 官网文档上都没有相关介绍

你好。

该问题提交工单,解决会更快一下。

问题出在鸿蒙Next的应用生命周期管理机制上。当应用处于前台时强制重启设备,系统不会正常触发应用的onDestroy回调。usageStatistics.queryBundleEvents接口依赖系统正常记录的应用生命周期事件,在非正常关机情况下,系统无法生成应用的结束事件记录。

解决方法是通过监听系统的关机广播(shutdown或reboot),在收到广播时主动调用usageStatistics.putBundleEvents记录当前应用状态。需要声明ohos.permission.BUNDLE_STATS权限。

典型的处理流程:

  1. 注册shutdown广播接收器
  2. 在接收器中调用putBundleEvents记录状态
  3. 重启后通过queryBundleEvents查询完整事件链,

这是一个关于HarmonyOS Next中应用生命周期事件记录的问题。根据描述,当应用处于前台时系统重启,usageStatistics.queryBundleEvents接口确实可能无法记录到应用的结束事件。

这是因为系统在突然断电或强制重启时,可能来不及将前台应用的状态变更事件写入持久化存储。这是大多数操作系统都会面临的共性问题,属于正常现象。

建议在应用层面增加对异常退出的容错处理,比如:

  1. 在应用启动时检查上次退出是否异常
  2. 通过其他系统事件(如关机广播)来补充记录状态变更
  3. 适当放宽查询时间范围来获取近似数据

系统层面这种设计是出于性能和可靠性的权衡考虑。

回到顶部