• QQ
  • nahooten@sina.com
  • 常州市九洲新世界花苑15-2

Android

Android中Toast若何在子线程中用

原创内容,转载请注明原文网址:http://homeqin.cn/a/wenzhangboke/jishutiandi/Android/2019/0615/545.html

 
在我们编写程序的时候,遇到过良多次的想要在子线程中挪用Toast,这时候程序编译没有问题,当我们滥觞运行在手机上的时候就会出现下列失足。
 
从这个错误中,我们可以看到, 是由于一个Looper工具的缘故, 固然良多人是不看这个报错信息的,由于大片面android程序员都觉得Toast是一个ui控件,必要在主ui线程中操纵才可以。。。(我打听的从事一两年开发履历的人也是这么清晰的)
底下阐发一下Toast在主线程与子线程运行的缺失项:
android的主ui线程中其android框架曾经默认给出了一个looper工具, 而我们本人建立的子线程中,looper工具必要本人给构建出来。这也即是为什么我们在子线程中应用Toast的时候会报出上图异常。。(要是不清晰Toast为什么在子线程应用必要Looper工具的可本人调查源码)
办理计划:
既然曾经晓得了问题是若何发生的, 辣么我们现在就只必要在我们的子线程中把Toast所必要的Looper工具给建立出来便了。
[java] view plain copy
new Thread(new Runnable() {  
  
                    @Override  
                    public void run() {  
                        Looper.prepare();  
  
                        Toast.makeText(TwoActivity.this, "子线程表现", Toast.LENGTH_SHORT).show();  
                        Looper.loop();  
                    }  
                }).start();  
new Thread(new Runnable() {
@Override
public void run() {
Looper.prepare();
Toast.makeText(TwoActivity.this, "子线程表现", Toast.LENGTH_SHORT).show();
Looper.loop();
}
}).start();
 
我们曾经给子线程内部建立了一个Looper工具,这样我们的Toast便进入到一个消息部队中,才能够举行输出!!
简单!
已结束!
 

上篇:上一篇:Android 好用的下拉控件Spinner
下篇:下一篇:android 后台常驻,不会被kill