安卓4.0以后主线程访问网络问题(NetworkOnMainThreadException)解决方法及子线程更新ui
2015-10-16 13:22
686 查看
安卓4.0之后谷歌建议不在主线程访问网络,可能是因为访问网络可能会等待时间长造成假死现象,解决办法无非是强行访问和开一个子线程访问
1.强行访问:
在activity里面onCreate方法里面加入
StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
这里不建议,谷歌禁止肯定有他的原因;
2.开启子线程访问:
当然,如果你在run方法里面修改ui也是会保错,解决方法如下:
通过handler去修改,可以这样
1.强行访问:
在activity里面onCreate方法里面加入
StrictMode.ThreadPolicy policy=new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
这里不建议,谷歌禁止肯定有他的原因;
2.开启子线程访问:
new Thread(new Runnable() { @Override public void run() { // TODO 此处访问网络 } }).start();
当然,如果你在run方法里面修改ui也是会保错,解决方法如下:
通过handler去修改,可以这样
handler.post(new Runnable() { @Override public void run() { } });
相关文章推荐
- Http请求工具类 httputil
- 各类 HTTP 返回状态代码详解(转)
- UNIX网络编程:select,epoll,poll比较
- IOS网络笔记--ASIHTTP类库的使用(网络监测)
- C#获得网络中所有SQL Server服务器数据库名称
- java 网络编程之ServerSocket详解
- HTTP 错误 500.21 - Internal Server Error 解决方案
- 《TCP/IP 详解 卷一》读书笔记-----Ping&Traceroute
- iOS9 HTTP 不能正常使用的解决办法
- linux http post的实现 -2
- 基于HTML5的3D网络拓扑自动布局
- TCP/IP、Http、Socket的区别
- iOS9新框架—Watch Connectivity(详情:http://ios.itcast.cn/subject/ios9/index.shtml )
- IOS 网络请求框架封装
- Linux网络编程:基于TCP的程序开发(1)
- gem install 出现Errno::ECONNRESET: Connection reset by peer - SSL_connect (https://api.rubygems.org
- HttpContext.Current.Cache 过期时间
- HttpContext.Cache和Application的区别
- (转)live555 RTSP Server RTP over TCP BUG
- HTTPRequest Response Session