我是一名热爱 Android 技术的程序员,平时爱造轮子,人送外号轮子哥 。
我的理想是让这个世界没有难开发的安卓项目,消灭一切难维护的代码。
Android 吐司框架,专治 Toast 各种疑难杂症
License: Apache License 2.0
-keep class com.hjq.toast.** {*;}
或用字面量替换getSimpleName方法
连续点击同一个item,会导致toast很长时间都不会弹出。
cancel方法里面是根据windowManager是否为空去判断移除的,那如果我在actB里面弹出toast,然后返回到actA,那么windowManager就是null了吧,也就没有移除了。实测vivo X21A有这个问题
APP按HOME键退到后台后还会弹toast,我现在是在APP里面做了判断,建议看能不能做进去
因为 吐司重复吐司的显示,导致我后面的改变的吐司不能及时显示出来,
关掉通知栏权限后友盟报错
java.lang.IllegalStateException: View android.widget.TextView{93b6bee V.ED..... ......ID 0,0-0,0 #102000b android:id/message} has already been added to the window manager.
at android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:371)
at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:131)
at android.widget.Toast$TN.handleShow(Toast.java:501)
at android.widget.Toast$TN$1.handleMessage(Toast.java:403)
at android.os.Handler.dispatchMessage(Handler.java:112)
at android.os.Looper.loop(Looper.java:216)
at android.app.ActivityThread.main(ActivityThread.java:7625)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:524)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:987)
能重现 不会崩溃但是吐司不提示 望fix 多谢!
在Dialog中,直接使用ToastUtils.show(R.string.can_not_empty)会出现无法适配多语言的情况,英文环境下仍然弹出的是中文(values资源文件已配好)。通过ToastUtils.show(mActivity.getString(R.string.can_not_empty))这种使用,则可以正常适配多语言。
吐司弹出来的延迟太久,比系统的慢了0.5秒 ,那没有那种一点就弹出来感觉...
现在Github里面所用的Toast都可以实现连续快速点击都会弹出Toast 为什么这个框架不行 连续点击确没有反应显示 ,测试直接给你bug了,作者是否可以优化一下,不管我点击多少次 速度多快,都可以显示出来 不延时 快速那种 ?QQ478104175
多次点击某个按钮 弹出的toast被保存在一个队列中 然后在点击别的按钮 ,会发现弹出toast的文字内容改变了,但是样式什么的都还是上一个点击的。
MyApplication中初始化了ToastUtils,但是测试发现无法显示吐司
在每次Toast之前移除上次的Toast。
例:连续点击4个按钮,分别Toast 1、2、3、4。
结果:点的快的时候,4无法显示。
华为畅享8e Android8.0.0 弹出来的Toast是一个有底色的弹框,上面没有文字
弹窗只出现一次 第二次点击不弹toast。 应该是快速点击的时候 toast不消失 只是文字改变一下这个逻辑吧
androidx 也一样用的吧
实测华为手机上关闭通知权限,仍然弹不出toast
java.lang.IllegalStateException: View android.widget.TextView{3728ddd V.ED..... ......ID 0,0-594,133 #102000b android:id/message} has already been added to the window manager.
I use genymotion :google pixel 3,
It happens when I quick click the view which need toast
你好,使用中发现关闭通知权限后显示Toast,切换回上一个Activity后Toast会闪现一下然后消失,demo也是这样,一加3T 系统版本7.1.1有该问题
打开APP之前允许通知栏,可以弹吐司,在设置里面 关闭通知权限,然后切换到APP,吐司弹不出来,必须要把进程杀掉才可以,集成的最新版本5.2依旧有bug,魅族手机MX5,系统5.1,不知道怎么测试的就断定已解决?你的dmeo可以,因为你添加了onRestart,但是如果用户集成呢?这个可以没有自己集成测试吧?
Github沟通效率实在是很低下,大家伙有问题或者Bug直接到Q群78797078私信给我反馈就OK,我会尽快答复你的问题
private long duration;
private final int SPACE_TIME = 3000;
@OverRide
public void onBackPressed() {
long now = System.currentTimeMillis();
if (now - duration > SPACE_TIME) {
duration = now;
ToastUtils.show("再按一次返回键关闭程序!");
return;
}
super.onBackPressed();
}
这么调用后发生了WindowManager: android.view.WindowLeaked:
moto z2 play 无法显示toast
#24302 java.lang.IllegalStateException
View android.widget.TextView{e64f546 V.ED..... ......ID 0,0-0,0 #102000b android:id/message} has already been added to the window manager.
com.hjq.toast.SafeToast$SafeHandler.dispatchMessage(SafeToast.java:64)
出错堆栈:
1 android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:316)
2 android.view.WindowManagerImpl.addView(WindowManagerImpl.java:94)
3 android.widget.Toast$TN.handleShow(Toast.java:469)
4 android.widget.Toast$TN$2.handleMessage(Toast.java:346)
5 android.os.Handler.dispatchMessage(Handler.java:102)
6 com.hjq.toast.SafeToast$SafeHandler.dispatchMessage(SafeToast.java:64)
7 android.os.Looper.loop(Looper.java:163)
8 android.app.ActivityThread.main(ActivityThread.java:6238)
9 java.lang.reflect.Method.invoke(Native Method)
10 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:933)
11 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:823)
小米6x上正常。
oppo a73上弹不出来,只有app在前台才可以看到,app切到后台了就不行了。
小米6x是android 8.1.0,miui10.2.2.0。
oppo是android 7.1.1,coloros v3.2。
这个库挺好的,目前来说问题最少的一个,但是有个地方让我很纠结,就是连续弹toast 会导致后面的不显示,一定要等前一个toast显示完了消失了过一会才会显示新的toast
能否开放成新的toast内容覆盖已经显示的toast内容 并且重置显示时间?比如说我for循环显示100次toast,只会弹一次,内容会从0更新到99 在更新到99以后才开始算显示时间
android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views.
at android.view.ViewRootImpl.checkThread(ViewRootImpl.java:7905)
at android.view.ViewRootImpl.requestLayout(ViewRootImpl.java:1276)
at android.view.View.requestLayout(View.java:22139)
at android.widget.TextView.checkForRelayout(TextView.java:8754)
at android.widget.TextView.setText(TextView.java:5487)
at android.widget.TextView.setText(TextView.java:5343)
at android.widget.TextView.setText(TextView.java:5300)
at com.hjq.toast.BaseToast.setText(BaseToast.java:32)
at com.hjq.toast.ToastStrategy.handleMessage(ToastStrategy.java:86)
at android.os.Handler.dispatchMessage(Handler.java:108)
BaseToastStyle 这个类中可以可以把 context 移除通过 Resource.getSystem 来获取相应的信息
View android.widget.TextView{81a4017 V.ED..... ......ID 0,0-0,0 #102000b android:id/message} has already been added to the window manager.
android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:335)
线上还是报这异常,这是toast通病,不知道有解决办法没有
例如一个按钮快速点击,每次点击统计次数,并弹出吐司,但是会有延迟显示,可不可以把之前的内容覆盖掉,立即显示最新的吐司内容。
子线程创建looper没停,应该会有资源泄露吧
建议:
1,像setGravity()设置那样,如果设置了setDuration()则使用开发者的设置,否则使用自动时长
2,让开发者可以配置自动时长的最大字数(现在是写死的20字)
点击2-3秒过后才会显示toast
项目中一直报此错误,crash
在手动关闭通知栏权限后,在onRestart()中初始化的时,调用ToastUtils.init(getApplication());recreate();会出现闪退的情况,百分之百复现
是不是需要一个变量控制一下呢?我想全局在底部展示,需要在init的时候就传递变量控制
就是不在application初始化
小哥 ,你 #WindowHelper类中的 ArrayMap 最好用android.support.v4.util.ArrayMap下的,不要用android.util.ArrayMap下的,不然有api 19下的会有问题!!!
华为9.0、10.0系统,安全键盘下toast无法正常提示
发现你新写的这个有问题,AActivity-->BActivity,点击按钮Button,跳转到CActivity,然后进行操作登录,返回到BActivity,再次点击BActivity中的Button,吐司不显示,因为在WindowHelper中记录的Activity不存在,返回在回到AActivity,同样不显示Toast内容
测试了下,这两款手机关闭通知权限,弹不出Toast
三星:SM-G9550
华为:Mate9 Pro
弹出的toast显示的宽高和设置的不一样
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.