getActivity/EasyWindow

如果先打开页面再show 或者 关闭页面的同时 show,这个toast不会在其他Activity上显示

StriveXiao opened this issue · 6 comments

startActivity(new Intent(this,TestActivity.class));
// 将 Toaster 中的 View 转移给 EasyWindow 来显示
new EasyWindow<>(this)
.setDuration(1000)
.setContentView(Toaster.getStyle().createView(this))
.setText(android.R.id.message, "跳转下一个页面")
.setGravity(Gravity.BOTTOM)
.setYOffset(100)
.show();

new EasyWindow<>(this)
            .setDuration(1000)
            .setContentView(Toaster.getStyle().createView(this))
            .setText(android.R.id.message, "测试")
            .setGravity(Gravity.BOTTOM)
            .setYOffset(100)
            .show();
    finish();

小伙子,EasyWindow 是用 WindowManager 来实现的,在没有悬浮窗权限的情况下,只能依附当前 Activity 才能显示,而你跳转到新页面的时候,新 Activity 已经将旧 Activity 覆盖了,所以导致你没看到有显示的情况。

至于 Toaster 为什么可以?因为你跳转新 Activity 的时候,里面是加了延迟显示,获取到的栈顶 Activity 是新的 Activity,而不是旧的 Activity,用的是新的 Activity 对象来显示 Toast,所以才能正常显示。

这个问题既不属于 Toaster 的 bug,也不属于 EasyWindow 的 bug,如果你要实现那种效果也不是没有办法,你在 finish 旧 Activity 的时候做一下延迟任务,在里面显示 EasyWindow,但是 XToast 的构造函数你要传入新的 Activity 的对象,你可以通过获取栈顶 Activity 来获取。

小伙子,你看看这边还有其他问题不,没有的话我就关闭 issue 了。

没有了,非常感谢