android开发,加载网络图片时 报错android.os.NetworkOnMainThreadException
在Android 4.0以上,网络连接不能放在主线程上,不然就会报错android.os.NetworkOnMainThreadException。但是4.0下版本可以不会报错。
在Android4.0以后,会发现,只要是写在主线程(就是Activity)中的HTTP请求,运行时都会报错,这是因为Android在4.0以后为了防止应用的ANR(Aplication Not Response)异常,Android这个设计是为了防止网络请求时间过长而导致界面假死的情况发生。
解决此问题有两种解决的方法:
1.可以再Activity的onCreate()方法中加入这样一段代码,适用于网络请求数据量很小的话,如下
if (android.os.Build.VERSION.SDK_INT > 9) {
StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
StrictMode.setThreadPolicy(policy);
}
2.启动一条子线程进行你的网络请求,推荐使用这种
// Android 4.0 之后不能在主线程中请求HTTP请求
new Thread(new Runnable(){
@Override
public void run() {
cachedImage = asyncImageLoader.loadDrawable(imageUrl, position);
imageView.setImageDrawable(cachedImage);
}
}).start();
更多相关文章
- Android(安卓)Volley框架详解
- urlConn.setRequestProperty是做什么的以及作用
- Android之ImageView载入网络上的图片
- Android(安卓)工具包 xUtils 3.3.16
- Android(安卓)网络应用--Apache HttpClient的使用
- Android(安卓)网络请求框架Retrofit2.0使用笔记
- 《Android开发艺术探索》第十一章重点笔记
- 【Android】网络下载图片&SD卡文件存储
- Android(安卓)7.0及以上版本 使用fillder抓取https请求