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