我试图从一个正在运行的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());
}
}发布于 2010-10-21 00:38:20
您应该创建一个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);
}
}https://stackoverflow.com/questions/3334336
复制相似问题