Android在thread中Toast不能显示问题解决

2018-01-26 01:05:22

有两种方法,我用第一种方法,软件假死了。所以不推荐。

第一种方法:

改写代码之前是:


[java] view plain copy

  1. Toast.makeText(getApplicationContext(), "test", Toast.LENGTH_LONG).show();  

改写之后:


[java] view plain copy

  1. Looper.prepare();  

  2. Toast.makeText(getApplicationContext(), "test", Toast.LENGTH_LONG).show();  

  3. Looper.loop();  


一般如果不是在主线程中又开启了新线程的话,一般都会碰到这个问题。

原因是在创建新线程的时候默认情况下不会去创建新的MessageQueue。


第二种方法:

[java] view plain copy

  1. Handler handler = new Handler() {  

  2.     @Override  

  3.     public void handleMessage(Message msg) {  

  4.         // TODO Auto-generated method stub  

  5.         if (msg.what == 0) {  

  6.             Toast.makeText(getApplicationContext(), "test", Toast.LENGTH_LONG).show();  

  7.         }  

  8.         super.handleMessage(msg);  

  9.     }  

  10.   

  11. };  

  12. Message msg = handler.obtainMessage();  

  13. msg.what = 0;  

  14. handler.sendMessage(msg);  






线程里面不能进行UI操作的,可以在线程里面用handler发送信息,然后再显示UI,比如就把你的toast改成handler.sendEmptyMessage()。。


  • 2019-11-09 19:16:35

    java标记过期方法

    java注解:@Deprecated(不建议使用的,废弃的);@SuppressWarnings(忽略警告,达到抑制编译器产生警告的目的)

  • 2019-11-12 02:56:39

    使用.htaccess重定向后无法显示图片,CSS失效,该如何处理

    现在我需要把这个域名泛解析到blog目录(*.mydomain.org),同时保持另外两个目录的解析不变。尝试对最后一段作以下修改后(前面的内容不变),出现问题:另两个目录中的网站内的图片无法显示,CSS全部失效。

  • 2019-11-14 11:21:34

    vue中的this指向问题

    ※ 对于普通函数(包括匿名函数),this指的是直接的调用者,在非严格模式下,如果没有直接调用者,this指的是window。showMessage1()里setTimeout使用了匿名函数,this指向 window。 ※ 箭头函数是没有自己的this,在它内部使用的this是由它定义的宿主对象决定。showMessage2()里定义的箭头函数宿主对象为vue实例,所以它里面使用的this指向vue实例。

  • 2019-11-18 23:18:49

    spring boot中读取配置信息一

    首先我们都知道一个常识,那就是每个人都有自己的年龄,比如我们现在的业务需求是查询所有年龄大于20的人的相关信息,如果我们选择通过配置文件来配置这个值为20的常量的话,我们该如何配置和如何从配置文件中获取这个值呢?,application.yml的内容如下(注意 “age:“ 和 “20“ 之间需要一个空格,yml的语法 ):

  • 2019-11-19 01:20:18

    java8 forEach、filter、map

    filter()、findAny()、orElse()配合使用,可以根据条件获取某个元素,如果没有返回指定的值。