uni-app 安装在华为手机中从后台切回先黑屏才渲染

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

uni-app 安装在华为手机中从后台切回先黑屏才渲染

操作步骤:

  • 打开app;
  • 切后台;
  • 点击应用图标,使应用进入前台。

预期结果:

  • 在应用切换到前台时,页面不发生黑屏切换。

实际结果:

  • 在应用切换到前台时,页面切换时黑屏,然后才正常渲染。

bug描述:

uni-app打包为安卓app,安装在华为手机(HUAWEI P30 Pro)型号的手机上。应用切换到前台时,页面切换时黑屏,然后才正常渲染。 使用了官方自己的示例app以及Android 离线SDK - 正式版下载的包,通过android studio打包后的app。都有此现象。

录频见附件。 手机型号如下图所示:

手机型号

切换黑屏示意录屏.zip

表格信息

信息项 详情
产品分类 uniapp/App
PC开发环境 Windows
PC开发环境版本 window 10 专业版
HBuilderX类型 正式
HBuilderX版本 3.7.0
手机系统 Android
手机系统版本 Android 12
手机厂商 华为
手机机型 HUAWEI P30 Pro
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX
App下载地址 http://m3w.cn/uniapp

5 回复

离线sdk什么版本,使用最新版本sdk看看


是最新版本的sdk

解决了嘛?!

在开发uni-app应用时,遇到从后台切回应用时出现黑屏再渲染的问题,通常与应用的页面渲染和生命周期管理有关。以下是一些可能的解决方案和代码示例,帮助你在uni-app中解决这一问题。

1. 优化页面渲染

确保页面的渲染逻辑尽可能高效,避免在onShowonLoad等生命周期钩子中执行复杂的计算或网络请求。可以将这些操作放在onReadymounted(Vue)中,并在后台切换时暂停不必要的操作。

2. 使用定时器延迟渲染

有时,简单的延迟渲染可以解决黑屏问题。你可以在onShow中使用setTimeout来延迟页面的渲染。

export default {
  data() {
    return {
      isReady: false
    };
  },
  methods: {
    delayRender() {
      setTimeout(() => {
        this.isReady = true;
      }, 500); // 延迟500毫秒渲染
    }
  },
  onShow() {
    this.delayRender();
  },
  onLoad() {
    // 其他初始化操作
  }
};

在模板中,根据isReady的值来控制渲染:

<template>
  <view v-if="isReady">
    <!-- 页面内容 -->
  </view>
  <view v-else>
    <!-- 占位内容或加载动画 -->
  </view>
</template>

3. 保持页面状态

确保在页面切换到后台时,保存页面状态,并在返回时恢复。这可以通过使用Vuex或uni-app的本地存储来实现。

4. 使用keep-alive组件

如果应用中的某些页面频繁切换,可以考虑使用keep-alive组件来缓存页面状态,避免重复渲染。

<template>
  <keep-alive>
    <router-view v-if="$route.meta.keepAlive"></router-view>
  </keep-alive>
  <router-view v-else></router-view>
</template>

在路由配置中,为需要缓存的页面添加meta.keepAlive属性。

5. 调试和测试

使用uni-app提供的开发者工具和真机调试功能,仔细检查黑屏时应用的日志和状态,确保没有异常抛出或资源加载失败。

结论

黑屏问题通常与页面渲染和资源管理有关。通过上述方法,你可以优化应用的渲染逻辑,减少不必要的操作,提高应用的响应速度和稳定性。如果问题依然存在,建议深入检查应用的日志和性能数据,找出根本原因并进行针对性优化。

回到顶部