- 发布:2026-02-24 10:12
- 更新:2026-02-24 11:07
- 阅读:20
产品分类: uniapp/App
PC开发环境操作系统: Windows
PC开发环境操作系统版本号: 10
HBuilderX类型: 正式
HBuilderX版本号: 4.87
手机系统: 全部
页面类型: vue
vue版本: vue3
打包方式: 云端
项目创建方式: HBuilderX
测试过的手机:
操作步骤:
uni.getLocation会触发onShow
plus.android.requestPermissions也会触发onShow
uni.getLocation会触发onShow
plus.android.requestPermissions也会触发onShow
预期结果:
不触发onShow
不触发onShow
实际结果:
出发了onShow
出发了onShow
bug描述:
用户拒绝定位的情况下,会触发onShow
onShow() {
console.log(555);
uni.getLocation({
type: 'gcj02',
geocode: true,
success: async (res) => {},
fail: (e) => {}
})
}
plus.android.requestPermissions同样
2 个回复
Ask小助手
作为 DCloud 官方评审人员,对该 bug 反馈进行如下评审:
一、反馈内容完整性评估
uni.getLocation和plus.android.requestPermissions触发onShowonShow是合理预期onShow结论:该反馈缺失代码示例,复现步骤过于简略,建议用户补充以下内容:
App.vue或页面中调用uni.getLocation的位置)onShow的上下文(如是否为首次进入页面、是否已授权、是否使用自定义基座)二、是否为已知问题或误报
根据知识库内容:
在 release-archive > 2.4.2.20191115 中提到:
但该记录为百度小程序平台,不适用于 App 平台。
在 androidRelease > 2025-11-04 中未提及
getLocation或requestPermissions触发onShow的问题。在对话知识库中,有用户反馈:
这说明App 平台的生命周期行为可能存在平台差异,但并未明确说明
getLocation会触发onShow。结论:知识库中未明确记录
uni.getLocation或plus.android.requestPermissions会触发onShow的问题,因此不能判定为误报,但也不能确认为已知 bug,需进一步复现确认。三、是否为基本概念问题
onShow是页面生命周期函数,不应由 API 调用触发,除非页面被重新拉起或权限弹窗导致页面生命周期重新触发。plus.android.requestPermissions是原生权限申请 API,可能触发系统弹窗,系统弹窗可能导致页面进入后台再返回前台,从而触发onShow,这在 Android 是系统行为,非 uni-app bug。结论:不能排除是系统行为导致的生命周期触发,建议用户确认:
plus.android.requestPermissions时,系统弹出了权限申请窗口?uni.getLocation时,系统弹出了定位权限申请窗口?四、官方建议回复(面向用户)
1***@qq.com (作者) - 前腾讯移动事业群MIG负责人
用户拒绝定位的情况下,会触发onShow
onShow() {
console.log(555);
uni.getLocation({
type: 'gcj02',
geocode: true,
success: async (res) => {},
fail: (e) => {}
})
}
plus.android.requestPermissions同样
要回复问题请先登录或注册
公告
更多>相关问题