天天看點

執行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();

    }

     }

 };

注:新人貼求指教。

下一篇: 無聊周末

繼續閱讀