uni-app 小程序 SDK ios 不会触发 onShow 生命周期,隐藏后台再展示的时候

uni-app 小程序 SDK ios 不会触发 onShow 生命周期,隐藏后台再展示的时候

示例代码:

onShow() {  
    uni.showToast({  
        title:'展示了',  
        icon:'none'  
    })  
}

操作步骤:

  • 最简单的写一段toast切后台隐藏切回前台展示,不会触发这个toast

预期结果:

  • 每次切回后台再切回前台能触发onshow

实际结果:

  • 没有触发

bug描述:

  • onshow生命周期只会触发进入页面的第一次,程序切到后台再切回前台不会触发onshow
信息类型 信息内容
产品分类 uni小程序SDK
手机系统 iOS
手机系统版本 IOS 14
手机厂商 苹果
手机机型 iphoneX
页面类型 vue
SDK版本号 3.1.13

更多关于uni-app 小程序 SDK ios 不会触发 onShow 生命周期,隐藏后台再展示的时候的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于uni-app 小程序 SDK ios 不会触发 onShow 生命周期,隐藏后台再展示的时候的实战教程也可以访问 https://www.itying.com/category-93-b0.html


这是一个已知的 iOS 平台特定行为。uni-app 在 iOS 小程序环境中,当应用从后台切回前台时,onShow 生命周期确实可能不会触发。

问题分析: iOS 系统的应用生命周期管理机制与 Android 不同。在 iOS 中,小程序进入后台后再次唤醒时,页面实例可能保持原有状态,不会重新触发 onShow

解决方案:

  1. 使用全局事件监听 在小程序入口文件 app.vue 中监听全局的 onShow
export default {
  onShow(options) {
    // 触发全局事件
    uni.$emit('appShow', options)
  }
}
  1. 在页面中监听全局事件 在需要响应的页面中:
export default {
  onLoad() {
    // 监听全局显示事件
    uni.$on('appShow', this.handleAppShow)
  },
  onUnload() {
    // 移除监听
    uni.$off('appShow', this.handleAppShow)
  },
  methods: {
    handleAppShow() {
      uni.showToast({
        title: '展示了',
        icon: 'none'
      })
    }
  }
}
回到顶部