我有多个可点击的视图。如果它们在前一次点击的0.5秒内收集,我想收集所有系列点击,然后仅在最后一次点击0.5秒后批量处理点击。
e.g。
Delay: 0.2 0.4 0.6
Click on A ---> B ---> C ---> D
处理应该是“ABC”(假设将它们传递给处理方法,字符串“ABC”将执行),然后是“D”的另一个处理。我遇到了“等待和观察”部分的问题。这样做的好方法是什么?
提前致谢。
麦克
答案 0 :(得分:0)
通过Handler完成它,这对于这种情况非常简单。对于那些感兴趣的人,我在活动中定义了一个处理指定消息的处理程序,该消息将立即处理。然后在每次单击时,我清除消息队列,然后发送延迟0.5秒的消息。
Handler myHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case 3001:
process();
break;
}
}
};
每当有一个我感兴趣的视图时,我在其onClickListener()
中添加以下行myHandler.removeMessages(3001);
myHandler.sendEmptyMessageDelayed(3001, 500);
可能存在过度删除msg3001的情况,但这没关系,因为它正在由系统正常处理。