如何通过HandlerThread发送阻止消息?

时间:2014-04-29 06:26:16

标签: java android

我需要从当前线程向HandlerThread发送消息,但是请立即停止sendmessage调用。有没有办法以阻塞方式执行此sendMessage()?

2 个答案:

答案 0 :(得分:0)

这就是我认为的解决方案。

// This handler will be associated with the UI thread
Handler uiHandler = new Handler() {
  @Override
  public void handleMessage(Message msg) {
    textView.setText("Progress: " + msg.what);          
  }
};

private void CreateThread() {
  Thread t = new Thread() {
    public void run() {
      for(int i = 0; i < cnt; i++)
      {
        try {
          Thread.sleep(1000);
        } catch (Exception e) {
          Log.v("Error: ", e.toString());
        }

          // You can update the UI by sending messages to the UI thread
          uiHandler.sendMessage(uiHandler.obtainMessage(i));
        }
      }
    }
  };
  t.start();
}

答案 1 :(得分:0)

请查看Exchanger课程。我会创建一个交换器,发送一个Runnable可以访问该交换器,并在该交换器上进行同步。这样交换器会给我异步获得的结果。你可以想出一些可以用于消息的东西。

请注意,调用Exchanger.exchange()的线程可能需要等待很长时间! (如果从UI线程调用它,可能会得到一个ANR。)