2010-07-26 193 views
0

我想从运行的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); 
    } 
}