2014-01-18 2 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

выполняют все сетевые операции с использованием либо обработчика потоков, либо асинтетов – skyshine

ответ

0

Что это не работает? Это сам код или вам нужна помощь при запуске этого цикла while (true) в виде потока?

Цикл while (true) запустит основной поток java, поэтому вы не сможете выполнять какие-либо другие операции за пределами цикла while. Поэтому сначала я бы рекомендовал сделать операции внутри цикла while в потоке либо реализованным runnable, либо создать анонимный класс и запустить поток.

Есть много примеров на этом: Java - creating a new thread

Надеется, что это помогает! Сообщите мне, если я неправильно понял ваш вопрос.

Смежные вопросы