在Java类之间进行通信

时间:2014-10-01 13:54:05

标签: java android

我一直在尝试为Android编写一个简单的3类java应用程序,但我无法弄清楚一件事。如何解决在类之间传递数据的问题?在我的情况下,我有3个班级:

  1. 在套接字上等待数据
  2. 解析数据
  3. 在屏幕上写入数据
  4. 第三个类不能执行网络部分,因为它涉及一个无法在Activity类中完成的等待循环。

    那我该怎么做呢?

1 个答案:

答案 0 :(得分:2)

您可以定义一个监听器,该监听器由"在屏幕上写入"类和#34;解析数据"班级用来与它交谈。例如:

class Parser {
    private ParsingFinishedListener callback;

    public Parser(ParsingFinishedListener c) {
        this.callback = c;
    }

    //some code

    public void parse(String stuffToParse) {
         //code
         callback.onTextParsed(parsedText);
    }

    public interface ParsingFinishedListener {
         public void onTextParsed(String textToVizualize);
    }
}

class MyTask extends AsyncTask<Void, Void, Void> {
    private ParsingFinishedListener callback;         
    public MyTask(ParsingFinishedListener c) {
        this.callback = c;
    }

    ..doInBackground..

    ..onPostExecute(String result) {
        Parser p = new Parser(callback);
        p.parse(result);
    }
}

class MyActivity extends Activity implements ParsingFinishedListener {

    ...onCreate(...) {
        ...
        MyTask task = new MyTask((ParsingFinishedListener) this);
        task.execute();
    }
    //some code

    @Override
    public void onTextParsed(String result) {
         //do something with the result
    }

}

您在Parser中定义了侦听器,在完成解析后,您可以使用它来访问应该实现它的Activity。