Open Lietrain opened 1 year ago
如题,当界面上同时存在多个可见活动(透明背景的活动模拟dialog),同时没有通知权限,会调用多个show方法导致多个Toast出现
Line 674 in ActivityToast.show() (com.blankj.utilcode.util.ToastUtils)
@Override public void show(int duration) { if (mToast == null) return; if (!UtilsBridge.isAppForeground()) { // try to use system toast iToast = showSystemToast(duration); return; } boolean hasAliveActivity = false; for (final Activity activity : UtilsBridge.getActivityList()) { //此处循环引发问题 if (!UtilsBridge.isActivityAlive(activity)) { continue; } if (!hasAliveActivity) { hasAliveActivity = true; iToast = showWithActivityWindow(activity, duration); //如果有多个可见活动 } else { showWithActivityView(activity, sShowingIndex, true); //这两个show方法都会被调用 } } if (hasAliveActivity) { registerLifecycleCallback(); UtilsBridge.runOnUiThreadDelayed(new Runnable() { @Override public void run() { cancel(); } }, duration == Toast.LENGTH_SHORT ? 2000 : 3500);
++sShowingIndex; } else { // try to use system toast iToast = showSystemToast(duration); } }
无
put the stack of crash here
如果有的话请添加屏幕截图以帮助解释问题。
我也遇到了 用原生的toast就没问题 该怎么解决呢
描述 Bug
如题,当界面上同时存在多个可见活动(透明背景的活动模拟dialog),同时没有通知权限,会调用多个show方法导致多个Toast出现
相关代码
Line 674 in ActivityToast.show() (com.blankj.utilcode.util.ToastUtils)
@Override public void show(int duration) { if (mToast == null) return; if (!UtilsBridge.isAppForeground()) { // try to use system toast iToast = showSystemToast(duration); return; } boolean hasAliveActivity = false; for (final Activity activity : UtilsBridge.getActivityList()) { //此处循环引发问题 if (!UtilsBridge.isActivityAlive(activity)) { continue; } if (!hasAliveActivity) { hasAliveActivity = true; iToast = showWithActivityWindow(activity, duration); //如果有多个可见活动 } else { showWithActivityView(activity, sShowingIndex, true); //这两个show方法都会被调用 } } if (hasAliveActivity) { registerLifecycleCallback(); UtilsBridge.runOnUiThreadDelayed(new Runnable() { @Override public void run() { cancel(); } }, duration == Toast.LENGTH_SHORT ? 2000 : 3500);
异常堆栈
无
截图
如果有的话请添加屏幕截图以帮助解释问题。