getActivity / Toaster

Android 吐司框架,专治 Toast 各种疑难杂症
Apache License 2.0
3.25k stars 406 forks source link

在小米8发现toast显示时间特别长(就几个字);并且短时间连续调用后,会有一段时间不显示吐司 #57

Closed githubZYQ closed 3 years ago

githubZYQ commented 3 years ago

如题:使用8.8版本, // 在 Application 中初始化 ToastUtils.init(this); //设置样式 ToastUtils.initStyle(new ToastQQStyle(this));

在点击事件中执行 ToastUtils.show(“该功能暂未开通!”);

问题一:在小米8发现toast显示时间特别长(就几个字“该功能暂未开通!”),即使设置时长也没用。 ToastUtils.setToastStrategy(new ToastStrategy(){ @Override public int getToastDuration(CharSequence text) { return 2000; } }); 问题二:并且短时间连续调用后(快速反复点击onclick),接下来会有一段时间不显示吐司,大概一分钟之后再点击触发才会显示

getActivity commented 3 years ago

首先框架是基于原生 Toast 进行封装的,所以显示时长只有两种,一种是短吐司(2 秒),另外一种是长吐司(3.5 秒)。

getActivity commented 3 years ago

如果你有需要自定义显示时长,请搭配悬浮窗框架一起使用:https://github.com/getActivity/XToast

githubZYQ commented 3 years ago

你好,通过setToastStrategy中重写getToastDuration方法回调时间为2000,打印日志也发现走了这里,但是这个时长在这个手机没有起效果。其它手机确实是2秒钟就消失了。是不是miui系统处理了呢?另外XToast是需要悬浮窗权限来实现的吧

githubZYQ commented 3 years ago

哈喽,我发现了问题的原因,是因为测试的小米8手机设置了“设置-更多设置-无障碍-操作执行时长(无障碍功能超时)-10秒”引起的,它会导致系统的toast时间延长10秒(可设置,最多2分钟),此项设置恢复默认后功能恢复正常。 参考链接:https://www.xiaomi.cn/post/23111975

getActivity commented 3 years ago

我试了一下,确实会导致 Toast 延迟消失,但是这个是用户行为导致的,会导致手机里面的所有应用的 Toast 提示都会这样,所以这个问题跟框架没有关系。