处理Android

时间:2017-04-14 14:11:30

标签: android

我有一个“+”和“ - ”按钮,可以增加/减少一个项目的数量。

每次更改数量时,我都需要发送网络请求(点击网络服务)。

问题是,用户可能会“垃圾”“+”和“ - ”按钮。例如,他们可能会在一秒钟内按下它3次。

关于这种情况,我想等一下,然后根据最后的数量发送网络请求。这是为了减少我需要做的请求数量(在这种情况下,从3个请求到1个请求)。

建议的方法是什么?

我可以使用postDelayed中的OnClick来解决此问题吗?

2 个答案:

答案 0 :(得分:1)

我认为你可以尝试这样的事情

private long lastClick;

void onClick(View view) {
    lastClick = System.currentTimeMillis();

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            if (System.currentTimeMillis() - lastClick >= 1000) {
                makeNetworkRequest();
            }
        }
    }, 1000);
}

此代码将跳过第一个请求,并在暂停1秒后仅运行最后一个请求

答案 1 :(得分:0)

作为Ivan回答的更新并解决了两个问题:

  • 您的逻辑不需要postDelayed,并且会增加额外的1秒延迟

  • 将更新移至lastClick进入循环,我们只希望在实际触发网络调用时更新。

实施例

private long lastClick;

void onClick(View view) {
    // Check if network call has been made in last second
    if (System.currentTimeMillis() - lastClick >= 1000) {
        // Mark time of network call    
        lastClick = System.currentTimeMillis();
        makeNetworkRequest();
    }
}