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

注:新人貼求指教。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM