uni-app ios app.vue onHide 问题
uni-app ios app.vue onHide 问题
产品分类:
uniapp/App
PC开发环境操作系统:
Mac
PC开发环境操作系统版本号:
10.15.7
HBuilderX类型:
正式
HBuilderX版本号:
3.2.16
手机系统:
iOS
手机系统版本号:
iOS 14
手机厂商:
苹果
手机机型:
11
页面类型:
vue
vue版本:
vue2
打包方式:
云端
项目创建方式:
HBuilderX
示例代码:
onShow: function() {
console.log('App Show')
uni.setStorageSync('result','我进来了')
},
onHide: function() {
console.log('App Hide')
console.log(uni.getStorageSync('result'))
}
操作步骤:
在app.vue 里面 在onShow本地储存一个字段后,当ios 强制杀掉进程 可以监听到onHide 事件,但是,我想清除本地 储存,或者打印储存的值 不执。(实际在项目上任何方法都不执行)
预期结果:
在app.vue 里面 在onShow本地储存一个字段后,当ios 强制杀掉进程 可以监听到onHide 事件,项目上任何方法可以执行
实际结果:
在app.vue 里面 在onShow本地储存一个字段后,当ios 强制杀掉进程 可以监听到onHide 事件,但是,我想清除本地 储存,或者打印储存的值 不执。(实际在项目上任何方法都不执行)
bug描述:
在app.vue 里面 在onShow本地储存一个字段后,当ios 强制杀掉进程 可以监听到onHide 事件,但是,我想清除本地 储存,或者打印储存的值 不执。(实际在项目上任何方法都不执行)
更多关于uni-app ios app.vue onHide 问题的实战教程也可以访问 https://www.itying.com/category-93-b0.html
未复现问题,测试可以正常打印存储的值
我这里是可以复现的,而且是多次出现这种情况,我新建一个项目,啥都没有,多试几次,是必现的,是杀进程不是进入后台
回复 宽: 新建空项目测试也这样?请提供下示例(上传附件)
回复 DCloud_UNI_Anne: 已上传
已上传
能给个建议吗?我想记录用户在线时长,有什么好的方法处理吗?
回复 宽: 集成三方的统计,比如友盟统计,如果非要自己实现的话,最简单的方式弄个定时器10秒存一下,下次启动的时候提交上一次的数据,类似这种吧
回复 DCloud_iOS_XHY: 好的 感谢
这是iOS系统限制导致的问题。当应用被强制终止时,iOS会限制应用的执行时间,导致onHide中的异步操作无法完成。
解决方案:
- 对于需要立即执行的操作,建议使用同步API(如uni.setStorageSync)
- 对于应用退出时需要保存的数据,应该在数据变更时就立即保存,而不是等到onHide时处理
- 可以考虑使用plus.io的同步API,在iOS上可能有更好的兼容性
示例修改:
onShow() {
console.log('App Show')
uni.setStorageSync('result', '我进来了')
},
onHide() {
console.log('App Hide')
// 使用同步API
const result = uni.getStorageSync('result')
console.log(result)
// 立即执行清除操作
uni.removeStorageSync('result')
}