当前位置: 首页 > news >正文

Android 多版本Toast版本区别以及使用可能遇到的问题

Toast多次显示的版本区别

早期 Android(9及之前):同一个 Toast 多次 show,会延长显示时间。

Android 10/11 及以后:Toast 机制重构,底层采用了新的 ToastPresenter/ToastUI,防止 Toast 滥用。
多次 show 并不会延长显示时间,甚至会报错。包括android U。

Android 11 Toast行为变更 :只会显示一次,后续 show 只会延长到最大时间(3.5s),不会无限延长,也不会重新显示

Android U报错:

NotificationService: cancelToast pkg=com.XXX.XXX.XXX token=android.os.BinderProxy@518d211
CoreBackPreview: Window{d439d3f u0 Toast}: Setting back callback null
InputManager-JNI: Input channel object 'd439d3f Toast (client)' was disposed without first being removed with the input manager!
WindowManager: Attempted to add a toast window with unknown token android.os.Binder@45ece5b.  Aborting.
ToastPresenter: Error while attempting to show toast from com.XXX.XXX.XXX 
ToastPresenter: android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.BinderProxy@5cb0df0 is not valid; is your activity running?
ToastPresenter:     at android.view.ViewRootImpl.setView(ViewRootImpl.java:1539)
ToastPresenter:     at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:411)
ToastPresenter:     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:150)
ToastPresenter:     at android.widget.ToastPresenter.addToastView(ToastPresenter.java:342)
ToastPresenter:     at android.widget.ToastPresenter.show(ToastPresenter.java:256)
ToastPresenter:     at com.android.systemui.toast.ToastUI$$ExternalSyntheticLambda0.run(go/retraceme 4fb9a8aa0330e6a481ec4694d8141764de40b212263105c9b4877ebb36b7816c:266)
ToastPresenter:     at com.android.systemui.toast.ToastUI$ToastOutAnimatorListener.onAnimationEnd(go/retraceme 4fb9a8aa0330e6a481ec4694d8141764de40b212263105c9b4877ebb36b7816c:12)
ToastPresenter:     at android.animation.Animator$AnimatorListener.onAnimationEnd(Animator.java:711)
ToastPresenter:     at android.animation.Animator$AnimatorCaller$$ExternalSyntheticLambda1.call(Unknown Source:4)
ToastPresenter:     at android.animation.Animator.callOnList(Animator.java:669)
ToastPresenter:     at android.animation.Animator.notifyListeners(Animator.java:608)
ToastPresenter:     at android.animation.Animator.notifyEndListeners(Animator.java:633)
ToastPresenter:     at android.animation.AnimatorSet.endAnimation(AnimatorSet.java:1443)
ToastPresenter:     at android.animation.AnimatorSet.doAnimationFrame(AnimatorSet.java:1230)
ToastPresenter:     at android.animation.AnimationHandler.doAnimationFrame(AnimationHandler.java:344)
ToastPresenter:     at android.animation.AnimationHandler.-$$Nest$mdoAnimationFrame(Unknown Source:0)
ToastPresenter:     at android.animation.AnimationHandler$1.doFrame(AnimationHandler.java:87)
ToastPresenter:     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1341)
ToastPresenter:     at android.view.Choreographer$CallbackRecord.run(Choreographer.java:1352)
ToastPresenter:     at android.view.Choreographer.doCallbacks(Choreographer.java:952)
ToastPresenter:     at android.view.Choreographer.doFrame(Choreographer.java:878)
ToastPresenter:     at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:1326)
ToastPresenter:     at android.os.Handler.handleCallback(Handler.java:958)
ToastPresenter:     at android.os.Handler.dispatchMessage(Handler.java:99)
ToastPresenter:     at android.os.Looper.loopOnce(Looper.java:205)
ToastPresenter:     at android.os.Looper.loop(Looper.java:294)
ToastPresenter:     at android.app.ActivityThread.main(ActivityThread.java:8248)
ToastPresenter:     at java.lang.reflect.Method.invoke(Native Method)
ToastPresenter:     at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:552)
ToastPresenter:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:981)

Toast使用情况:

1)在toast显示期间,使用同一个对象再次show(不调用cancel),会报错,且第一个显示之后,多次调用show之后的最后一次超过4s(经验值)之后才能再次show,否则还是会报错,不显示;

2)每次显示toast都使用新的对象。 toast显示期间来了新的,是顺序执行,依次执行,会导致现象过去很久,toast还在显示;

3)toast显示期间,使用同一个对象show,但是每次调用之前都执行cancel,同1)。
4)toast显示期间,新来内容,cancel上一个,在使用新对象,每次都能显示:可能导致上一个toast刚显示就消失了,存在闪现的问题。

http://www.dtcms.com/a/578213.html

相关文章:

  • 集团高端网站建设公司wordpress侧边栏文件
  • 【Java面向对象编程入门:接口、继承与多态】
  • 百度联盟的网站怎么做企业网站的设计要求有哪些
  • 别墅花园装修设计公司wordpress 网址优化
  • 云服务器可以做虚拟机吗?
  • 计算机操作系统:文件存储空间的管理
  • 【stm32协议外设篇】- PAJ7620手势识别传感器
  • 网站增加权重吗免费ip地址
  • “工业数据库怎么选”之一:深度解析 PI System vs TDengine
  • 如何做好网站盘锦网站建设策划
  • k8s kubelet Nameserver limits exceeded
  • 供暖季技术实战:益和热力用 TDengine 时序数据库破解热力数据处理难题
  • 蔡甸建设局网站jsp源码做网站
  • AI代码开发宝库系列:Dify本地化部署和应用
  • 推荐高性能MCU微控制器N32H785EC(MCU单片机特征)
  • Bayes/BO-CNN-GRU、CNN-GRU、GRU三模型多变量回归预测Matlab
  • 免费做国际贸易的网站打广告专用图
  • 云南固恒建设集团有限公司网站wordpress主题结合
  • 深度与高程计算:OpenGL RTT技术解析
  • Rust 练习册 10:多线程基础与并发安全
  • 电子商务网站建设评估工具办公宽带多少钱一年
  • Razor VB 变量详解
  • 输入一个故事主题,使用大语言模型生成故事视频【视频中包含大模型生成的图片、故事内容,以及音频和字幕信息】
  • 英文网站首页优化中信建设有限责任公司招投标
  • 前端浏览器设置input不记住密码、不自动填充密码,举例jquery
  • 二级域名免费申请网站环球资源网站网址
  • 网站建设要学多久网站建设与管理 市场分析
  • 潍坊网站建设排行房地产销售人员网站怎么做
  • 如何为你的项目选择合适的加速度计?
  • 【MySQL】索引 知识总结