HarmonyOS鸿蒙Next中微信聊天界面打开时不随系统息屏

HarmonyOS鸿蒙Next中微信聊天界面打开时不随系统息屏 微信聊天界面打开时不随系统息屏

5 回复

貌似,这个问题一直存在,

更多关于HarmonyOS鸿蒙Next中微信聊天界面打开时不随系统息屏的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


给权限了,

这个问题我也发现了有些APP它申请了屏幕常亮,但有时候忘记关闭屏幕,它就会一直耗电,之前我提过可以控制这个权限,不能应用自己亮屏,但是没有回应。

在HarmonyOS Next中,微信聊天界面打开时屏幕不随系统息屏,这通常是由于应用自身或系统设置中的“保持屏幕常亮”功能被激活。鸿蒙系统允许应用在特定场景下请求屏幕保持唤醒状态,以避免自动锁屏。

这是一个典型的应用保活场景。在HarmonyOS Next中,应用可以通过申请ohos.permission.KEEP_BACKGROUND_RUNNING权限,并结合ContinuousTaskMode能力,来实现特定场景下阻止系统息屏。

具体到微信聊天界面,其实现逻辑通常如下:

  1. 权限声明:在应用的module.json5配置文件中声明后台持续运行权限。

    {
      "module": {
        "requestPermissions": [
          {
            "name": "ohos.permission.KEEP_BACKGROUND_RUNNING"
          }
        ]
      }
    }
    
  2. 场景触发与管理:在聊天界面(如ChatAbility)的onWindowStageFocus生命周期中,启动一个持续任务。这需要调用backgroundTaskManager.startBackgroundRunning()方法,并指定一个ContinuousTaskMode,例如DATA_TRANSFER(数据传输)或AUDIO_PLAYBACK(音频播放),以表明保活的合理理由。系统会根据指定的模式进行资源调度和管理。

  3. 场景释放:当离开聊天界面(例如切换到微信主界面或其他应用)时,在onWindowStageUnfocus生命周期中,必须调用backgroundTaskManager.stopBackgroundRunning()来及时释放持续任务,避免不必要的功耗。

核心机制:HarmonyOS Next的持续任务机制是场景化受控的。它并非让应用无限期保活,而是允许应用在用户主动交互的特定前台场景(如视频通话、导航、音频播放、文件传输等)下,临时保持屏幕常亮或后台运行。系统会严格审核应用申请的ContinuousTaskMode是否与其当前业务场景匹配。

因此,你观察到的“微信聊天界面打开时不息屏”行为,正是微信应用在HarmonyOS Next上按照上述规范,在聊天界面这个前台场景中正确申请并使用持续任务能力的结果。这保证了用户在持续输入或查看消息时,屏幕不会因系统超时而熄灭,提升了交互体验。当退出该界面时,此保活状态会被正确解除。

回到顶部