Android Toast在子线程中为啥无法正常使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android Toast在子线程中为啥无法正常使用相关的知识,希望对你有一定的参考价值。

Toast的show和hide方法实现是基于Handler机制。我们可以把Toast理解为创建了一个handler,这样一来发消息的对象在这就是Toast了。
而且在TN类中并没有发现任何Looper.perpare()和Looper.loop()方法。所以这里的mhandler调用的就是当前线程的loop对象。
在对looper类说明的时候,知道线程本身默认是没有looper对象的,所以Toast在线程中使用的时候,必须创建一个looper对象。
参考技术A 不能,Toast只能在 主线程 (UI线程)中使用

Android开发遇到手机无法弹出Toast

今天遇到了一个很奇怪的问题,一个很简单的程序,就是点击按钮弹出一个Toast,但在手机上运行起来,却没有正常弹出Toast

第一反应就是看看是否调用了show方法,很显然,并不是这个低级问题,为了确定范围,使用另一部手机运行了一下,结果正常弹出了Toast

这样问题就基本明确了,手机问题!!!

费劲一番周折后,找到了解决的方法,在手机的设置 -> (某些手机前面可能有一项安全与隐私)通知中心 -> 将所运行的应用的状态栏开启就ok了

以上是关于Android Toast在子线程中为啥无法正常使用的主要内容,如果未能解决你的问题,请参考以下文章

Android Toast无法正常工作(App崩溃)

为啥loop之后就可以子线程更新ui

Android开发遇到手机无法弹出Toast

Toast 运行在主线程

奇特:子线程的Toast怎么显示不出来?

奇特:子线程的Toast怎么显示不出来?