uni-app设置darkmode为true后,安卓手机上视频全屏返回上一页直接进入退出app状态,这是怎么回事

发布于 1周前 作者 h691938207 来自 Uni-App

uni-app设置darkmode为true后,安卓手机上视频全屏返回上一页直接进入退出app状态,这是怎么回事

项目详情

开发环境、版本号及项目创建方式

项⽬目信息 详情
开发环境
版本号
项目创建方式
5 回复

看起来是闪退了 你用logcat截取下错误日志


解决了吗?我也遇到了

安卓是这样的,解决不了,不知道是什么原因, 然后去掉darkmode ,用了其他方式解决了

回复 uu_nur: 好的,谢谢

针对你提到的在uni-app中设置darkmodetrue后,在安卓手机上视频全屏返回上一页直接进入退出app状态的问题,这通常涉及到页面生命周期管理和全屏视频播放的处理。以下是一些可能的解决方案和代码示例,帮助你排查和修复这个问题。

问题分析

  1. 页面生命周期:在视频全屏播放后,返回页面时可能触发了页面的onUnloadonHide事件,导致页面被销毁或隐藏。
  2. 全屏视频播放:全屏视频播放时,应用可能失去了焦点,返回时未能正确处理焦点恢复。

解决方案

方案一:检查页面生命周期事件

确保在视频全屏播放返回时,页面不会被错误地销毁或卸载。可以在页面的onShowonHideonUnload事件中打印日志,查看返回时触发了哪些事件。

export default {
  onShow() {
    console.log('Page is shown');
  },
  onHide() {
    console.log('Page is hidden');
  },
  onUnload() {
    console.log('Page is unloaded');
  }
}

方案二:使用video组件的fullscreenchange事件

监听视频组件的全屏变化事件,确保在全屏退出时能够正确处理页面状态。

<template>
  <view>
    <video
      id="myVideo"
      src="your-video-url"
      @fullscreenchange="handleFullscreenChange"
    ></video>
  </view>
</template>

<script>
export default {
  methods: {
    handleFullscreenChange(event) {
      const isFullscreen = event.detail.fullscreen;
      if (!isFullscreen) {
        // 处理全屏退出后的逻辑,如重新聚焦页面等
        console.log('Video exited fullscreen');
      }
    }
  }
}
</script>

方案三:检查darkmode设置

虽然darkmode设置通常不会直接影响视频播放,但确保其他样式或逻辑没有因darkmode而发生变化,导致页面行为异常。

// 在main.js或App.vue中设置darkmode
uni.setSystemUIStyle({
  dark: true, // 设置为true开启暗色模式
  style: 'light', // 可选值 'dark', 'light'
  success: function () {
    console.log('Dark mode set successfully');
  }
});

总结

以上代码示例提供了检查页面生命周期、监听视频全屏变化事件以及设置darkmode的基本方法。你可以根据这些示例代码,结合你的具体应用逻辑,进一步排查和修复问题。如果问题依旧存在,建议检查是否有其他第三方库或插件影响了页面的行为,或者考虑在uni-app社区和官方文档中寻求更多帮助。

回到顶部