2014-01-18 161 views
1

我環顧四周,發現了這樣做的不同方式,所有這些方式似乎都會產生錯誤。這是我想要運行的。它連接到已經運行的服務器。 關於如何使其工作或更改以使其工作的任何想法?在後臺運行線程

String serverAddress = MainActivity.serverAddress; 
int port = MainActivity.newport; 
Socket socket = new Socket(serverAddress, port); 
in = new BufferedReader(new InputStreamReader(socket.getInputStream())); 
out = new PrintWriter(socket.getOutputStream(), true);   
String getName=MainActivity.name; 

// Process all messages from server, according to the protocol. 
while (true) { 
    String line = in.readLine(); 
    if (line.startsWith("SUBMITNAME")) { 
     out.println(getName); 
    } 
    else if (line.startsWith("NAMEACCEPTED")) { 
     //textField.setEditable(true); 
    } 
    else if (line.startsWith("MESSAGE")) { 
     mt.append(line.substring(8) + "\n"); 
    } 
} 
+0

你在哪裏運行這段代碼,有哪些錯誤?一個'AsyncTask'將是一個好主意。在'doInBackground()'中運行網絡代碼,並用任何其他方法更新'UI'。 – codeMagic

+0

使用線程處理程序或asynctask執行所有網絡操作 – skyshine

回答

0

這是什麼工作?它是代碼本身,還是你需要幫助,以(true)循環的形式運行這個線程?

while(true)循環會佔用主要的java線程,所以你不能在while循環之外執行任何其他操作。所以首先,我會建議通過實現runnable或創建一個匿名類並啓動線程,將while循環內部的操作變爲線程。

有很多的例子在此:Java - creating a new thread

希望這有助於!如果我把你的問題解釋錯了,請回復我。