我已经创建了处理程序,
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()。
我不清楚重现此问题的方案,它是随机发生的。
如果你们对这个问题有任何想法,请留下评论。
提前致谢。
最佳答案
如果您正在执行未及时返回的同步调用,则可能需要在后台线程上启动处理程序。
HandlerThread handlerThread = new HandlerThread(
"Background thread",
android.os.Process.THREAD_PRIORITY_BACKGROUND
);
handlerThread.start();
mHandler = new android.os.Handler(handlerThread.getLooper(), this);
只要确保将用户界面的所有更新都放在
runOnUiThread(Runnable)
有关线程和进程的更多信息,建议您查看Android developer guide to processes and threads