Метод run from extends Activity extends Runnable - PullRequest
0 голосов
/ 26 июля 2010

Я пытаюсь вызвать метод из Runnable, который работает.Он ожидает ввода строки и, когда она зависит от строки (строки действуют как команды), вызывает метод и должен выполнять то, что внутри него.

public class App extends Activity implements Runnable {

    public void run() {

         try {
             ServerSocket serverSocket = new ServerSocket(portNum);
             while (true) {          
                 Socket client = serverSocket.accept();

                 try {

                      BufferedReader in = new BufferedReader(new InputStreamReader(client.getInputStream()));
                      String str = in.readLine();
                      if(str.equals("test")) {
                          //method call here
                      }

                 } catch(Exception e) {
                        Log.d("App", e.getMessage());

                 } finally {
                            client.close();
                        Log.d("App", "Done.");
                    }
             }       
         } catch (Exception e) {
             Log.d("App", e.getMessage());
         }
    }

1 Ответ

1 голос
/ 20 октября 2010

Вы должны создать Handler объект. Каждый экземпляр Handler связан с потоком, и в зависимости от того, с каким потоком вы хотите связать / обработать сообщения, вы должны создать Handler в его контексте. Затем вы можете отправить сообщения в очередь Message потока, создав Handler. Когда строка входит, вы можете использовать что-то вроде этого:

public Handler handler_use = new Handler(){

    // @Override
    public void handleMessage(Message msg) {
       //Do something with the message
    }
}

А внутри блока try:

try {
    BufferedReader in = new BufferedReader(new  InputStreamReader(client.getInputStream()));
    String str = in.readLine();
    if(str.equals("test")) {
        //Construct the message Msg - based on the string
        handler_use.sendMessage(Msg);
    }
}
...