Releases: getActivity/Toaster
v10.0
修复 Toast 在关闭通知栏权限后无法在后台显示的问题 新增支持 ActivityToast 设置显示动画和显示时长
v9.6
优化框架的代码逻辑 新增 Toast 日志拦截器 新增不同同类框架对比文档
v9.5
新增 ToastUtils.isInit 方法 新增 ToastUtils.debugShow 方法 修正多个 Toast 同时显示会出现覆盖的效果 抑制项目中出现的代码警告和优化代码逻辑
v9.2
修复 SystemToast.setText 会出现 This Toast was not created with Toast.make…
v9.1
修复 WindowLifecycle.unregister 在极端情况下会出现空指针的问题
v9.0
ToastUtils 框架重构了,专治 Toast 各种疑难杂症,具体的变化如下:
-
显示方式不同:多个 Toast 同时显示,旧版本上面会采用排队显示机制,只有上一个显示完了才会显示下一个,能保证 Toast 的完整性,但是损失了 Toast 的即时性,经过调研大家更注重 Toast 的即时性,所以在新版本上面会取消上一个 Toast 显示,再显示下一个 Toast。
-
初始化方式不同:旧版本上采用的是饿汉式机制,ToastUtils.init 会初始化 Toast 对象和 Toast 布局,这样会影响 Application 的启动速度,经过认真思考,最终决定在新版本上换成懒汉式,也就是每次在 ToastUtils.show 时去创建 Toast 对象和 Toast 布局。
-
复用机制不同:旧版本上面采用是单例 Toast,这样做的好处是复用 Toast 对象和 Toast 布局,但是在某些情况会出现
IllegalStateException:View has already been added to the window manager
异常,这个问题极其难复现,在经过了十几个人的反馈之后,我终于等到了那个真正能复现这个问题的人,经过了长达一个多星期的排查和尝试修复,我放弃了对 Toast 对象和 Toast 布局的复用,而是每次 show 的时候都去创建 Toast 对象和 Toast 布局。 -
Android 11 适配更好:在 Android 11 上面,旧版本的 ToastUtils 采用的是 WindowManager 来显示自定义的 Toast,所以只会在当前应用上显示,这样会存在有一个问题,应用无法在后台显示自定义 Toast ,经过对 Android 11 Toast 的机制研究和实践,发现系统 Toast 在 Android 11 上面其实是可以在后台显示,但是不允许自定义布局,新版本的 ToastUtils 做了一个智能化处理,如果当前应用处于前台状态,就使用 WindowManager 来显示 Toast,如果当前应用处于后台状态,那么会判断当前设备是否是 Android 11,如果是就使用系统样式来显示 Toast,如果不是则会使用我们自定义的样式,由此来保证 Toast 能够正常显示给到用户。
v8.8
优化类名命名及代码注释 优化及抽取 Toast 创建的策略 优化匹配原生 Toast 的正则表达式
v8.6
兼容 Android 11 新特性
v8.5
适配 Android 11
v8.3
修复 Toast 没有跟随 Activity 生命周期的问题