博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android.os.NetworkOnMainThreadException
阅读量:6147 次
发布时间:2019-06-21

本文共 970 字,大约阅读时间需要 3 分钟。

 

   在4.0之后谷歌强制要求链接网络不能在主线程进行访问,所在主线程运行就会出现这个错误

  解决错误必须要创建一个子线程

new Thread(){
public void method1(){
//放入你要链接网络的数据 }}.start();
有了这句话之后,上面那个错误解决了,但是又有新的错误 

 因为只有主线程(UI线程)才可以跟新UI(如果不这样,就会造成线程的同步与互斥的某些复杂情况。。。)∴如果在子线程中更新UI会出现错误

 解决方法 :信息机制(handler原理)

1:在主线程中定义一个Handler

//主线程中定义一个handler  ,类声明一个之后又加一个大括号{}表示重写这个类的方法private Handler handler=new Handler(){    //这个方法是在主线程里面执行的    @Override    public void handleMessage(Message msg) {        //更新你需要的UI       String content= (String) msg.obj;//获取信息        tv.setText(content);//跟新UI    }};
View Code

 2:子线程里面

//调用handler的对象告诉系统我们要跟新UI                        //1:创建一个message对象                        Message msg=new Message();                        msg.obj=content;//  String content=StreamTools.tooleadStream(inputStream);                        handler.sendMessage(msg);                        //发送一条消息 信息把数据发到msg里面  ,发送完信息之后,主线程定义的handler就立马执行handleMessage()方法
View Code

 

转载于:https://www.cnblogs.com/zhu520/p/7667650.html

你可能感兴趣的文章
Jedox Cloud安全可升级自助式商业情报
查看>>
性能与性价比的平衡,阿里云第二代入门级实例T5详解
查看>>
清除windows系统垃圾文件简易脚本(bat)
查看>>
【逻辑题】舅舅问题
查看>>
康复者的福音来了,只要穿上这款机器人外骨骼便能自由转身
查看>>
libjingle翻译之《Important Concepts(重要概念)之Transports, Channels, and Connections(传输、通道、链接)》...
查看>>
ASP.NET MVC Model元数据及其定制: Model元数据的定制
查看>>
Veeam任命新的中国区总经理 坚信可用性领域大有可为
查看>>
蓝牙曝出高危漏洞 你该怎么办?
查看>>
用Libaad2来进行AAC解码
查看>>
它改变了整个扫地机器人行业,如今被全面收购
查看>>
Compile FreeCAD on Windows
查看>>
如何更高效地使用 OkHttp
查看>>
外媒:那些最易受到攻击的常见设备
查看>>
助阵智能化环境监控 长虹佳华推CHEWS无线管理解决方案
查看>>
007的建议 让你的企业像军情六处一样安全
查看>>
互联网分析师:5G距离我们还有多远?
查看>>
5款便捷的App帮你预定出租车
查看>>
物联网发展的六大智能化前景
查看>>
Wi-Fi新标准HaLow正面挑战ZigBee、Z-Wave
查看>>