【发布时间】:2015-02-12 06:55:55
【问题描述】:
我已经创建了处理程序,
public final Handler handlerPositionTest = new Handler() {
public void handleMessage(Message msg) {
Log.i(TAG, "handleMessage------------reached");
//MyCode here
}
};
我还有一个通用事件侦听器来接收事件详细信息,
private GenericEventListener PositionStatusChangedListener = new GenericEventListener() {
public void eventTriggered(Object sender, Event event) {
Log.i(TAG, "Event triggered here------------");
Log.i(TAG, "Event is not null------------:"+event);
Log.i(TAG, "hanlder------------:"+handlerPositionTest);
Message msg = handlerPositionTest.obtainMessage();
msg.what = 2;
msg.obj = e;
handlerPositionTest.sendMessage(msg);
}
};
如果我连续触发事件,则 sendMessage() 方法在几秒钟内无法到达处理程序中的 handleMessage() 方法。它丢失了该事件消息好吧。如果我在几秒钟后尝试它可以正常工作,我的意思是它正在到达 handleMessage()。
我不清楚重现此问题的方案。它是随机发生的。
如果你们对这个问题有任何想法,请留下评论。
提前致谢。
【问题讨论】:
-
我没有看到任何代码将处理程序启动到另一个线程。你在 UI 线程上做繁重的工作吗?
-
是的,我知道这可能会导致繁重的工作。但是和我现在的东西有关系吗?
标签: java android multithreading android-activity thread-safety