uni-app 在 Android App 中,页面的 onLoad 阶段调用 uni.showLoading() 没有效果
uni-app 在 Android App 中,页面的 onLoad 阶段调用 uni.showLoading() 没有效果
示例代码:
function delay(time) {
return new Promise((resolve, reject) => setTimeout(() => resolve(), time));
}
export default {
onLoad() {
console.log('Start loading ...');
uni.showLoading();
await delay(3000);
uni.hideLoading();
console.log('Load completed.');
}
};
操作步骤:
- 新建一个 uni-app 项目,在主页插入脚本代码,然后本地打包成 Android App。
- 使用 Android Studio 的调试功能或打包成
.apk文件后实机安装调试。
预期结果:
在页面加载时应当出现加载框
实际结果:
并没有在正确的时间出现加载框。
bug描述:
自己按照官网提供的打包方式进行打包,结果在页面中的 onLoad 生命周期调用 uni.showLoading 时没有反应。后续代码执行正常,而且从 logcat 中看不出有什么异常。
不论是 nvue 页面还是 vue 页面都会有这个问题。
同样的问题在实机调试和云端打包时就没有出现。请问是否是我在打包时漏掉了什么 lib 文件?或者是某些设置不正确导致的?
### 表格
| 项目 | 值 |
|--------------|----------------|
| 产品分类 | uniapp/App |
| PC开发环境 | Windows |
| PC操作系统版本 | Windows 10 20H2 |
| HBuilderX类型 | 正式 |
| HBuilderX版本 | 3.1.8 |
| 手机系统 | Android |
| 手机系统版本 | Android 11 |
| 手机厂商 | 努比亚 |
| 手机机型 | NX629J |
| 页面类型 | vue |
| 打包方式 | 离线 |
| 项目创建方式 | HBuilderX |
更多关于uni-app 在 Android App 中,页面的 onLoad 阶段调用 uni.showLoading() 没有效果的实战教程也可以访问 https://www.itying.com/category-93-b0.html
2 回复
我也遇到了这个问题,把onLoad 换成 mounted 就行了
更多关于uni-app 在 Android App 中,页面的 onLoad 阶段调用 uni.showLoading() 没有效果的实战教程也可以访问 https://www.itying.com/category-93-b0.html
这是一个已知的异步时序问题。在 onLoad 阶段直接调用 uni.showLoading() 时,由于页面渲染尚未完成,可能导致加载框无法正常显示。
解决方案:
- 使用
setTimeout延迟执行:
onLoad() {
console.log('Start loading ...');
setTimeout(() => {
uni.showLoading();
}, 0);
// 后续代码...
}
- 在
onReady生命周期中调用:
onReady() {
uni.showLoading();
// 后续代码...
}
- 使用
nextTick:
onLoad() {
this.$nextTick(() => {
uni.showLoading();
});
}

