我基本上是在这条消息的底部做代码发布。 foobar()将事件发布到公共状态机中。 我还将触摸屏事件发布到公共状态机中。 是的,通过使用处理程序,我没有同步问题? (即,我的状态机不会同时通过触摸和foobar事件发送消息)?
private Handler handler = new Handler();
handler.postDelayed(runnable, 100);
private Runnable runnable = new Runnable() {
@Override
public void run() {
/* do what you need to do */
foobar();
/* and here comes the "trick" */
handler.postDelayed(this, 100);
}
};
答案 0 :(得分:0)
Handler
对象的同一个实例将处理通过Looper
选择的消息/ runnables队列(默认情况下为主线程)。
所以不,如果你向处理程序发送一个消息列表,它们将一次运行1,而不是并行。
但是如果你担心同步问题,那么你应该在你的方法中围绕一个公共对象synchronize(object) {}
代码,这样他们就会等待锁定那个公共对象,这意味着你可以从任何地方调用该方法永远不会与使用synchronize(object) {}
的任何其他代码并行运行。