2010-07-26 8 views
0

실행중인 Runnable 내부에서 메소드를 호출하려고합니다. 그것은 문자열이 입력 될 때까지 기다리고, 문자열에 의존 할 때 (문자열은 명령처럼 동작합니다) 메소드를 호출하고 그 안에 whats를 실행해야합니다.extends activity from 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

Handler 개체를 만들어야합니다. 각 Handler 인스턴스는 스레드와 연결되어 있으며 메시지를 연결/처리하려는 스레드에 따라 해당 컨텍스트 내에서 Handler을 만들어야합니다. 그런 다음 Handler을 생성하는 스레드의 Message 큐로 메시지를 보낼 수 있습니다.

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); 
    } 
} 
문자열이 들어 오면이 같은 것을 사용할 수 있습니다