getActivity / Toaster

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

[建议]:showToast时可以在ToastParams增加一个参数控制,强制使用application.context吗? #113

Closed sea5241 closed 1 year ago

sea5241 commented 1 year ago

你觉得框架有什么不足之处?【必答】

现在是如果在前台,则使用当前Activity的context,但是如果展示Toast的时候立即关闭了当前Activity会导致Toast立即消失,其实APP并没有退到后台,应该继续展示Toast

issue 是否有人曾提过类似的建议?【必答】

框架文档是否提及了该问题【必答】

是否已经查阅框架文档但还未能解决的【必答】

你觉得该怎么去完善会比较好?【非必答】

showToast时可以在ToastParams里增加一个参数控制,强制使用application.context而不是使用当前Activity的context,这样能在当前二级Activity关闭的时候也能正常显示Toast

getActivity commented 1 year ago

小伙子,我曾经有实践过这种做法,但是最终走不通,用 Activity 作为上下文展示的 Toast,本质上是通过 WindowManager addView 了一个视图进去,如果要在当前 App 页面跨 Activity 展示,是做不了的,除非用系统的 Toast,这种就可以,另外你提的这个建议,直接持有 Context 对象,我觉得可以换一种方式实现,在 ToastParams 类新增一个参数,如果为 true,则表示这次的 Toast 需要跨页面展示,在创建 Toast 的时候则优先使用系统 Toast,这样就能最大限度保证 Toast 在后台显示。

getActivity commented 1 year ago

Toaster-12.5.aar.zip

getActivity commented 1 year ago
ToastParams params = new ToastParams();
params.text = "我是一个能跨页面展示的 Toast";
// 表示这个 Toast 需要跨页面展示
params.crossPageShow = true;
Toaster.show(params);
sea5241 commented 1 year ago

非常给力

sea5241 commented 1 year ago

但是有个问题,这样就不会显示自定义样式了吗?如果我想显示自定义样式的Toast,并且依赖的是Application的context,这样可以吗?APP退到后台可以不显示Toast,只要不报错就可以

sea5241 commented 1 year ago

我可以强制使用GlobalToast吗?而不是SystemToast

getActivity commented 1 year ago

@sea5241 小伙子,我测试了,可以显示自定义样式,你不能显示样式该不会是在后台的情况下弹的吧?

getActivity commented 1 year ago

我可以强制使用GlobalToast吗?而不是SystemToast

有悬浮窗权限就可以,没有就不行。

sea5241 commented 1 year ago

好的,多谢👍🏻