Android:方法不要在循环中执行线程

时间:2016-08-22 19:19:55

标签: java android multithreading

我有一个与服务器建立连接的应用程序(客户端),我尝试向此应用程序(客户端)发送一个特定的命令字符串,并且该命令在客户端上获得成功,但仅在& #34;中断"例如,在线程上:当关闭服务器或者打破此循环线程时。

所以,我的目标是让这个特定的命令字符串在Thread内部正常接收而不会出现任何类型的"中断"在线外。

欢迎任何建议。

Android代码

    class CommsThread implements Runnable {

                @Override
                public void run() {

                    try {

                    while(clientSocket.isConnected() && !Thread.currentThread().isInterrupted()){

                        //System.out.println("Waiting for server request");

                        BufferedReader reader = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));

                        String message = reader.readLine();

                        if(message != null && !message.trim().isEmpty()) {


// Don't executes on moment that i send, only after of a "interruption" in this Thread

                        System.out.println("Message Received: " + message); 

                       // Specific command string here to execute a foo() method

                        if(message.equalsIgnoreCase("foo")){

                            // foo();
                        }

 ////////////////////////////////////////////////////////////////////////////////////

                        }

                        reader.close();

                        //clientSocket.close();

                        if(message.equalsIgnoreCase("exit")) break;

                         Thread.sleep(100);
                    }
                    System.out.println("Shutting down Socket!!");
                    clientSocket.close();
                    } catch (Exception e1) {
                        //Log.e("clients", e1.toString());
                        //Toast.makeText(MainActivity.this, e1.toString(), Toast.LENGTH_LONG).show();
                        System.out.println(e1.toString());
                    } 

                }

                }

0 个答案:

没有答案