android - 工作线程之间的通信

标签 android multithreading communication

我在Android环境下编程,项目中有一个Main Activity,里面有一个AsynkTask类,另外还有一个Thread对象,实现了扩展Runnable接口(interface)。现在,AsynkTask 和 Thread 可以看作是两个由主线程管理的工作线程,即 Main Activity。如果我想让两个工作线程之间的通信成为可能,而不涉及主线程,我该怎么办?我如何使用处理程序来实现这一点?我知道如何在主线程和工作线程之间使用处理程序。我想知道如何只在工作线程之间使用它们,因为在这种情况下我不能传入构造函数处理程序,因为在这种情况下我不能直接实例化一个线程,将它作为参数传递给主线程创建的处理程序.主线程必须创建两个工作线程,并且它们必须在没有主线程参与的情况下进行通信。 我希望我已经足够清楚了。

最佳答案

如果您想将处理程序与工作线程一起使用,您必须在该线程上创建一个 Looper,如 http://developer.android.com/reference/android/os/Looper.html 中所述。 .

像这样:

 class LooperThread extends Thread {
      public Handler mHandler;

      public void run() {
          Looper.prepare();

          mHandler = new Handler() {
              public void handleMessage(Message msg) {
                  // process incoming messages here
              }
          };

          Looper.loop();
      }
  }

然后您可以从任何其他 ThreadmHandler 发送消息。

关于android - 工作线程之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17392151/

相关文章:

android - 发布 apk 中的 Firebase IllegalAccessException

javascript - 在 android studio 中将 JavaScript (UnityScript) 翻译为 Java 随机字符串生成

java - 电位器圆形按钮

java - 使用 HttpClient 在不同线程中连接到同一 URL

networking - 有效请求前的多条消息

c# - 串行数据的二进制通信协议(protocol)解析器设计

Android Large Scale Project - 是否可以分成几个库项目?

java - 在特定时间后中断迭代的最佳方法是什么?

c++ - 有人可以解释为什么使用 OpenMP 部分比单线程运行得慢吗?

embedded - 通过串行端口通信有更高级别的协议(protocol)吗?