Android:如何在批处理之前检测和收集多次点击(在多个视图上)

时间:2014-06-18 03:04:07

标签: android delay detection

我有多个可点击的视图。如果它们在前一次点击的0.5秒内收集,我想收集所有系列点击,然后仅在最后一次点击0.5秒后批量处理点击。

e.g。

Delay:     0.2    0.4    0.6
Click on A ---> B ---> C ---> D

处理应该是“ABC”(假设将它们传递给处理方法,字符串“ABC”将执行),然后是“D”的另一个处理。我遇到了“等待和观察”部分的问题。这样做的好方法是什么?

提前致谢。

麦克

1 个答案:

答案 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的情况,但这没关系,因为它正在由系统正常处理。