执行Socket socket = new Socket(ip, port);时抛出个异常:android.os.NetworkOnMainThreadException解决办法

       首先,确认你的android版本是4.0之后再用此方法解决,因为在4.0之后在主线程里面执行Http请求才会报这个错,也许是怕Http请求时间太长造成程序假死的情况吧。Android在4.0之前的版本支持在主线程中访问网络,但是在4.0以后对这部分程序进行了优化,也就是说访问网络的代码不能写在主线程中了。

        解决方法:

        1.在 onCreate() 添加一段代码:new Thread(runnable).start();//使用另外一个线程处理Http请求

        2.实现runnable接口,将socket的实例化放到这里进行(红字标注的部分)

Runnable runnable = new Runnable(){
     @Override
     public void run() {
     try {
       ip = ipEdit.getText().toString().trim();
       socket = new Socket(ip,PORT);
    } catch (UnknownHostException e) {    
       e.printStackTrace();
    } catch (IOException e) {    
       e.printStackTrace();
    }
     }
 };

注:新人贴求指教。

posted @ 2013-12-13 11:40  Entropy_lxl  阅读(9093)  评论(0编辑  收藏  举报