首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从扩展活动扩展Run方法扩展Runnable

从扩展活动扩展Run方法扩展Runnable
EN

Stack Overflow用户
提问于 2010-07-26 19:22:53
回答 1查看 3.1K关注 0票数 0

我试图从一个正在运行的Runnable内部调用一个方法。它等待输入一个字符串,当它依赖于该字符串(字符串充当命令)时,它会调用一个方法,并运行其中的内容。

代码语言:javascript
复制
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());
         }
    }
EN

回答 1

Stack Overflow用户

发布于 2010-10-21 00:38:20

您应该创建一个Handler对象。每个Handler实例都与一个线程相关联,并且根据您希望在哪个线程上关联/处理消息,您应该在其上下文中创建Handler。然后您可以将消息推送到创建Handler的线程的Message队列中。当字符串进入时,您可以使用类似以下内容:

代码语言:javascript
复制
public Handler handler_use = new Handler(){

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

在try块中:

代码语言:javascript
复制
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);
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3334336

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档