5***@qq.com
5***@qq.com
  • 发布:2022-07-01 17:14
  • 更新:2022-07-05 17:20
  • 阅读:964

【报Bug】uni.previewImage、uni.chooseImage(不排除其他原生API也会)会触发onShow和onHide事件

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: macOS 12.3..1

HBuilderX类型: 正式

HBuilderX版本号: 3.4.15

手机系统: Android

手机系统版本号: Android 12

手机厂商: 小米

手机机型: 红米K50

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

// App.vue页面

onShow: function() {

console.log('App page on Show');

this.isBack = false

this.isUseApi = false

},

onHide: function() {

console.log('App page on Hide');

this.isBack = true

},

// 图片预览页面

<image

class=""

:src="curImg"

:style="imageStyles"

@tap="showPreview(curImg)">

showPreview(*url*) {

uni.previewImage({

urls: [*url*]

})

}

// 选择图片页面

uni.chooseImage({

count: 1,

sizeType: ['original', 'compressed'],

sourceType: ['album', 'camera'],

success: (*r*) => {}

})

预期结果:

使用相关api按照文档说明,不会触发onShow、onHide事件

实际结果:

会触发onShow、onHide事件

bug描述:

使用uni.previewImage、uni.chooseImage API会触发onShow 和 onHide生命周期钩子函数,APP测试目前发现这两个,但不排除其他原生的API也会触发。

2022-07-01 17:14 负责人:无 分享
已邀请:
DCloud_UNI_WZF

DCloud_UNI_WZF

有什么问题吗,预览和选择图片的时候页面内容不就是显示和隐藏吗

  • 5***@qq.com (作者)

    不好意思,有个地方没有说全,就是按你们文档说的,App.vue文件里对应的onShow(当 uni-app 启动,或从后台进入前台显示)、onHide(当 uni-app 从前台进入后台),这里指的是应用切换到后台挂着,和从后台到打开应用(前台),这么理解没有错吧?那调用其它原生的API也会触发就和文档说的不一致啊,这也导致了一些消息推送的业务bug,类似微信一样的后台G着和应用进程杀死都要收到系统消息弹窗,我在App.vue文件监听了onShow和onHide这就有问题

    2022-07-05 17:55

  • 5***@qq.com (作者)

    App.vue文件,onShow就不接收系统弹窗消息,onHide弹系统消息,但是uni.previewImage、uni.chooseImage触发了App.vue文件里的onShow和onHide事件,就导致图片预览和选择照片页面会有系统弹窗消息

    2022-07-05 17:58

  • DCloud_UNI_WZF

    回复 5***@qq.com: 目前如此设计是为了和微信小程序保持一致,目前看只能根据业务场景做逻辑判断,比如利用全局状态标记

    2022-07-05 18:31

  • 1***@qq.com

    回复 5***@qq.com: 你是咋解决的

    2024-03-16 11:13

  • 1***@qq.com

    回复 DCloud_UNI_WZF: 搞不懂挺无语的,判断?如何判断?就算我再onhide拦截previewimage触发的事件,比如在previewimage的页面中这时候用户使APP进入后台,根本就无法知道app的状态,能不能加个app平台专属的隐藏显示事件

    2024-03-16 11:18

  • 吾逍遥

    回复 DCloud_UNI_WZF: 这个app.vue中onHide和onShow与微信小程序保持一致可以理解 ,但在APP端应该考虑下前台后台情况,现在想APP切换到后台时调用的方法都无法执行,只能等待切换到前台时先执行onHide中代码再执行onShow代码,这个onHide生命周期就没什么意义了!!!

    2024-06-24 10:27

该问题目前已经被锁定, 无法添加新回复