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