zoukankan      html  css  js  c++  java
  • 执行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();
        }
         }
     };

    注:新人贴求指教。

  • 相关阅读:
    单例模式
    C++继承-重载-多态-虚函数
    c++仿函数 functor
    常用排序算法实现与效率比较
    树的中序非递归遍历
    二叉树递归遍历
    队列的顺序存储框架
    栈的链式存储框架
    栈的顺序存储构架
    函数指针和回调函数
  • 原文地址:https://www.cnblogs.com/lixiaolun/p/3472757.html
Copyright © 2011-2022 走看看