首先,确認你的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();
}
}
};
注:新人貼求指教。