在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、启动子线程进行网络请求(推荐使用)

    new Thread(new Runnable(){             @Override        public void run() {                //请求详情        }).start();

更多相关文章

  1. Android(安卓)实现json网络数据通过BaseAdapter加载到ListView中
  2. android 网络访问-图片处理优秀开源项目
  3. Android笔记--handler机制
  4. Android使用HttpURLConnection和HttpClient请求服务器数据
  5. android 线程(一)
  6. Android系列之网络(二)----获取HTTP请求头与响应头
  7. Android网络游戏之神农诀项目开发--视频观看地址
  8. Android(安卓)网络(四) Retrofit学习笔记
  9. android客户端程序访问服务器端webservice,几篇不错的文章!

随机推荐

  1. android源码分析流程-init.c
  2. Android(安卓)Studio3.0升级gradle遇到的
  3. Android更新完ADT后遇到的问题
  4. android studio 更改 app 包名和包的长度
  5. OSChina 技术周刊第十期,每周技术抢先看!
  6. android 退出应用方法一:点击两次退出应用
  7. Android(安卓)笔记5---事件处理和手势
  8. android屏幕页面实现滚动,页面跳转
  9. Android中利用Fragment显示为两屏
  10. android中view手势滑动冲突的解决方法