uni-app热更新后,uni.showToast提示持续显示,需杀掉app进程重启解决,问题仅限于荣耀和华为手机

发布于 1周前 作者 yuanlaile 来自 Uni-App

uni-app热更新后,uni.showToast提示持续显示,需杀掉app进程重启解决,问题仅限于荣耀和华为手机

3 回复

能看看你的uniToast怎么封装的吗??在那个定时器里面调用一下uni.hideToast()看看可以吗


这是封装的

针对你提到的uni-app热更新后,uni.showToast提示持续显示的问题,且仅限于荣耀和华为手机,这通常与Android系统的特定行为或设备兼容性问题有关。虽然无法直接给出确切的解决方案(因为具体问题需要具体分析,并可能涉及设备系统底层的差异),但我可以提供一个检查代码和逻辑的方法,帮助你排查和定位问题。

首先,确保你的uni.showToast调用是正确且合理的。以下是一个标准的uni.showToast使用示例:

uni.showToast({
    title: '更新成功',
    icon: 'success',
    duration: 2000 // 持续时间为2秒,默认单位为毫秒
});

检查点

  1. 持续时间设置: 确保duration参数已正确设置。如果未设置或设置为0,Toast可能会持续显示直到下一个Toast调用或用户交互。

  2. 避免重复调用: 检查代码中是否有多个地方调用uni.showToast,特别是在热更新逻辑中。如果热更新过程中多次调用且未正确处理,可能会导致Toast重叠显示。

  3. 异步处理: 如果uni.showToast是在异步操作中调用的,确保调用逻辑正确。例如,使用async/await.then()确保Toast在正确的时机显示。

  4. 设备兼容性处理: 针对荣耀和华为手机,可以尝试添加特定设备的兼容性处理。虽然uni-app已经做了大量的兼容性工作,但特定设备的问题仍可能出现。可以考虑在调用uni.showToast前后添加日志,帮助定位问题是否在此处触发。

示例日志代码

console.log('Before showing toast');
uni.showToast({
    title: '更新成功',
    icon: 'success',
    duration: 2000,
    success: function () {
        console.log('Toast shown successfully');
    },
    fail: function (err) {
        console.error('Failed to show toast:', err);
    }
});
console.log('After showing toast');

结论

如果上述方法仍无法解决问题,建议:

  • 在社区或论坛中搜索是否有其他开发者遇到类似问题,并查看他们的解决方案。
  • 使用官方提供的热更新和问题排查工具进行深入分析。
  • 考虑向uni-app官方提交bug报告,提供详细的设备型号、系统版本和复现步骤,以便官方团队进行调查和修复。
回到顶部