在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();

更多相关文章

  1. Android(安卓)Volley框架详解
  2. urlConn.setRequestProperty是做什么的以及作用
  3. Android之ImageView载入网络上的图片
  4. Android(安卓)工具包 xUtils 3.3.16
  5. Android(安卓)网络应用--Apache HttpClient的使用
  6. Android(安卓)网络请求框架Retrofit2.0使用笔记
  7. 《Android开发艺术探索》第十一章重点笔记
  8. 【Android】网络下载图片&SD卡文件存储
  9. Android(安卓)7.0及以上版本 使用fillder抓取https请求

随机推荐

  1. 【Android Studio快捷键】之导入相应包声
  2. Android 主题动态切换框架:Prism
  3. 解决Android studio中的Android 7.0 在 A
  4. 我的2016-我与android的故事
  5. 甲骨文想要扼杀 Android,大喷 Android 侵
  6. Android P静默安装/卸载App适配终极指南
  7. 整合Plugin-X之后的ios项目配置
  8. Android nfc读卡模式流程
  9. Android如何用json格式传数据到后台(SSM)
  10. android framework学习(知乎-作者van Bruc