android.os.NetworkOnMainThreadException 异常处理

原创 2013年12月03日 11:05:51

使用android4.4,在做一个网络下载时遇到这个问题,经过问了两位大神后发现是这个版本不支持在主线程中使用耗时的线程,比如这种下载,因为,系统会关闭在5秒内无反应的程序,所以就想了把这个操作放到子线程中,在android有个很好的Handler类为处理这个问题

NetworkThread.java类

public class NetworkThread implements Runnable {
    private String url;
    private Handler handler;
    
    //从主线程中把需要的参数传递过来
    public NetworkThread(String url, Handler handler) {
        this.url = url;
        this.handler = handler;
    }

    @Override
    public void run() {
        StringBuffer respData = new StringBuffer();
        try {
            /*
             * 下面是两种网络下载的操作
             */
            URL myUrl = new URL(url);
            URLConnection conn = myUrl.openConnection();
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    conn.getInputStream()));

            /*HttpClient httpClient = new DefaultHttpClient();
             HttpResponse httpRsp= httpClient.execute(new HttpGet(url));
             HttpEntity entity = httpRsp.getEntity();
            BufferedReader reader = new BufferedReader(new InputStreamReader(
                    entity.getContent()));*/
            String line = reader.readLine();
            while (line != null) {
                respData.append(line);
                line = reader.readLine();
            }
            //得到一个消息对象
            Message msg = Message.obtain();
            //赋值一个变量
            msg.obj = respData;
            //发送这个消息
            handler.sendMessage(msg);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}
MainActivity.java

Handler handler = new Handler(){

			@Override
			public void handleMessage(Message msg) {
				System.out.println("执行后的result:" + msg.obj);
			}
		};
		NetworkThread networkThread = new NetworkThread(url, handler);
		new Thread(networkThread).start();

在主线程中启动一个子线程,并用Handler类来处理这个消息。
版权声明:本文为博主原创文章,未经博主欢迎转载,记得加上本文出处哟~~

Android.os.NetworkOnMainThreadException 异常处理

项目是2.1开发 测试手机是android4.0时候提示 android.os.NetworkOnMainThreadException异常 出错误地方是访问网络的webservice有问题 ...
  • twlkyao
  • twlkyao
  • 2013年05月16日 21:03
  • 816

异常处理-android.os.NetworkOnMainThreadException

在android 2.3上设计的下载程序,在android 4.0上运行时报android.os.NetworkOnMainThreadException异常,原来在4.0中,访问网络不能在主程序中进...
  • zhujunwang
  • zhujunwang
  • 2012年08月20日 17:29
  • 509

【异常处理】android.os.NetworkOnMainThreadException

android.os.NetworkOnMainThreadException看名字就能知道,是网络请求在MainThread中产生的异常 这种问题;一般是 在执行网络 逻辑操作的时候;没有通过...
  • u013472738
  • u013472738
  • 2017年01月13日 17:05
  • 102

android.os.NetworkOnMainThreadException异常处理

在android4.0以上编写网络访问逻辑代码的时候,如果我们采用的方式和4.0以前的一样,那么就会抛出android.os.NetworkOnMainThreadException异常。意思是网络访...
  • reality_jie
  • reality_jie
  • 2013年10月20日 10:27
  • 1785

android.os.NetworkOnMainThreadException 异常处理

项目是2.1开发 测试手机是android4.0时候提示 android.os.NetworkOnMainThreadException异常 出错误地方是访问网络的webservice有问题 ...
  • lylzwsy
  • lylzwsy
  • 2013年09月17日 08:55
  • 1899

Android android.os.NetworkOnMainThreadException 异常处理

项目是2.1开发 测试手机是android4.0时候提示 android.os.NetworkOnMainThreadException异常 出错误地方是访问网络的webservice有问题 ...
  • svrsimon
  • svrsimon
  • 2013年05月13日 10:49
  • 962

HTTP连接出错:android.os.NetworkOnMainThreadException

【网络连接接口】 public class CheckVersionTask implements Runnable{ public void run() { try ...
  • rongwenbin
  • rongwenbin
  • 2015年03月26日 16:28
  • 637

android之android.os.NetworkOnMainThreadException异常

android之android.os.NetworkOnMainThreadException异常分析及解决办法。
  • zxnlmj
  • zxnlmj
  • 2014年05月15日 15:31
  • 3562

Retrofit2.0 android.os.NetworkOnMainThreadException解决方法

在使用Retrofit2.0中出现了android.os.NetworkOnMainThreadException异常,代码如下: FamousInfoModel.getInstance(getA...
  • jdsjlzx
  • jdsjlzx
  • 2016年05月17日 16:30
  • 2416

【Android开发那点破事】解决android.os.NetworkOnMainThreadException

昨天和女朋友换了手机,我的iPhone 4S 换了她得三星I9003。第一感觉就是好卡,果断刷机。以前是Android 2.3的系统。回来刷成了4.4。好了,问题来了。在我用手机测试我们的APP的时候...
  • huxiweng
  • huxiweng
  • 2014年02月25日 13:13
  • 27097
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android.os.NetworkOnMainThreadException 异常处理
举报原因:
原因补充:

(最多只允许输入30个字)