2013-06-10 3 views
0

Я тестирую чате службы с «Веб-гнездо»android.os.NetworkOnMainThreadException - Web Оправа

код не делать какие-либо ошибки. Но, когда я обед приложение, он даже не может быть запущен с

погрешность

06-10 16:59:22.420: E/AndroidRuntime(10814): FATAL EXCEPTION: main 
06-10 16:59:22.420: E/AndroidRuntime(10814): java.lang.RuntimeException: Unable to resume activity {com.websocketchat_test/com.websocketchat_test.WebsocketChat}: android.os.NetworkOnMainThreadException 
06-10 16:59:22.420: E/AndroidRuntime(10814): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2466) 
06-10 16:59:22.420: E/AndroidRuntime(10814): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2494) 
06-10 16:59:22.420: E/AndroidRuntime(10814): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2008) 
06-10 16:59:22.420: E/AndroidRuntime(10814): at android.app.ActivityThread.access$600(ActivityThread.java:123) 
06-10 16:59:22.420: E/AndroidRuntime(10814): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1169) 

Мой главный код здесь ..

public class WebsocketChat extends Activity implements View.OnClickListener{ 

private static String SERVER_HOST = "10.0.0.1"; 

private WebSocket websocket; 
private EditText messageEditText; 
private TextView logsTextView; 

@Override 
public void onCreate(Bundle savedInstanceState) {  
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    messageEditText = (EditText)this.findViewById(R.id.messageEditText); 
    logsTextView = (TextView)this.findViewById(R.id.logsTextView); 

    try { 
     URI url = new URI("ws://" + SERVER_HOST + "/"); 
     websocket = new WebSocketConnection(url); 

     websocket.setEventHandler(new WebSocketEventHandler() { 
      Handler handler = new Handler(); 

      public void onOpen() { 
       updateLog("connected."); 
      } 

      public void onMessage(final WebSocketMessage message) { 
       handler.post(new Runnable() { 
        public void run() { 
         updateLog(message.getText().trim()); 
        } 
       }); 
      } 

      public void onClose() { 
       updateLog("closed"); 
      } 
     }); 

     View sendButton = this.findViewById(R.id.sendButton); 
     sendButton.setOnClickListener(this); 

    } catch (WebSocketException wse) { 
     wse.printStackTrace(); 
    } catch (URISyntaxException use) { 
     use.printStackTrace(); 
    } 
} 

@Override 
public void onResume() { 
    super.onResume(); 

    try { 
     websocket.connect(); 
    } catch (WebSocketException wse) { 
     wse.printStackTrace(); 
    } 
} 

public void onClick(View view) { 
    try { 
     websocket.send(messageEditText.getText().toString()); 
     messageEditText.setText(""); 
    } catch (WebSocketException wse) { 
     wse.printStackTrace(); 
    } 
} 

private void updateLog(String message) { 
    logsTextView.setText("> " + message + "\n" + logsTextView.getText()); 
} 

}

Я не знать, почему это произошло. Я добавил интернет-разрешение точно. Любое предложение было бы в порядке. Ответьте пожалуйста.

ответ

0

Недавняя версия для Android не позволит любой сетевой активности на вашей основной/пользовательской нити. Вы можете взглянуть на AutobahnAndroid - реализацию Android/Java WebSocket, которая выполняет всю работу в фоновом режиме.

Раскрытие информации: Я являюсь оригинальным автором Autobahn и работаю в Tavendo.

+0

привет. Я обратился к веб-сайту ... но ... есть ли какой-нибудь пример общения с использованием websocket? – hurj

+0

Я хочу скачать Echoclient в Github .. но я не могу ... не могли бы вы отправить мне файл с моей почтой? – hurj

+0

Вы можете клонировать Git repo или загружать архив с zip-сервером из https://github.com/tavendo/AutobahnAndroid/archive/master.zip. – oberstet