Closed billdizl closed 1 year ago
小伙子,我看了一下代码,发生这个问题的原因有两种情况:
你初始化 Toaster 的时候,是怎么初始化的?是不是做了什么特殊操作?例如闪屏页初始化?或者 Application 开启子线程或者延迟进行初始化?
在application中初始化,在onCreate中判断了进程,防止多次初始化if (TextNotEmptyUtilsKt.isEmptyNotNull(currentProcessName).equals(AppUtils.getAppPackageName())) { initToast(); },除此之外没有别的操作,在自己的测试机中都没有出现过问题,但是在线上出现了这种问题.当然我查阅了所有的代码,未调用Toaster.setStyle(null)方法
有没有这么一种可能 ,可能是被GC回收掉了?
小伙子,强引用是不会被 GC 回收的,所以不会出现这种情况。
在application中初始化,在onCreate中判断了进程,防止多次初始化if (TextNotEmptyUtilsKt.isEmptyNotNull(currentProcessName).equals(AppUtils.getAppPackageName())) { initToast(); },除此之外没有别的操作,在自己的测试机中都没有出现过问题,但是在线上出现了这种问题.当然我查阅了所有的代码,未调用Toaster.setStyle(null)方法
你先看一下是不是在多进程的情况下使用了 Toaster 框架
该项目没有使用多进程.建议优化下,判断下用户是否初始化完成,初始化完成才走Toaster逻辑,没有初始化走下Toast原生的方法,这样子也算优化点吧,至少不会因为其他问题崩溃
框架版本【必填】
12.3
问题描述【必填】
当然 已经初始化过了~~~~
Fatal Exception: java.lang.NullPointerException: Attempt to invoke interface method 'int com.hjq.toast.config.IToastStyle.getGravity()' on a null object reference at com.hjq.toast.Toaster.setView(Toaster.java:253)
复现步骤【必填】
自定义 Toaster.setView(R.layout.toast_custom_view_toaster); Toaster.setGravity(Gravity.CENTER, 0, 50); Toaster.showShort(object); 非必现,偶现,几率很低
是否必现【必填】
否
项目 targetSdkVersion【必填】
31
出现问题的手机信息【必填】
Galaxy A02
出现问题的安卓版本【必填】
11
问题信息的来源渠道【必填】
其他渠道
是部分机型还是所有机型都会出现【必答】
部分
框架最新的版本是否存在这个问题【必答】
是
框架文档是否提及了该问题【必答】
未选择
是否已经查阅框架文档但还未能解决的【必答】
否
issue 列表中是否有人曾提过类似的问题【必答】
否
是否已经搜索过了 issue 列表但还未能解决的【必答】
是
是否可以通过 Demo 来复现该问题【必答】
否
提供报错堆栈
No response
提供截图或视频
No response
提供解决方案
判断下sToastStyle 如果是空的话 再重新new 一个吧,总不能让它崩溃吧