gpt4 book ai didi

java - 如何检测多次点击并最终在 Android 应用程序中仅触发一次更新

转载 作者:行者123 更新时间:2023-11-29 04:34:25 25 4
gpt4 key购买 nike

我目前正在使用 ContentProviders 为 Android 实现 MediaPlayer。

我想做的是为“下一步”按钮实现一个监听器,该按钮收集在特定时间范围内执行的多次点击,并最终触发一个包含要跳过多少首轨道的信息的更新查询。

例如,在 250 毫秒的时间范围内,按钮被点击 5 次,然后应跳过 5 条轨道。如果此后仅按一次,则应跳过一首轨道。此外,时间范围不应在特定时间后结束,而是在每次点击时重新启动,这样您就可以跳过可以说无限数量的轨道,并且只有在最后一次点击事件后达到超时后才会触发更新。

我尝试了多种实现,但直到现在都没有成功,我在谷歌中找到的唯一内容是如何避免快速的多点触摸事件。但这就是重点,我故意希望它们被执行。有什么想法吗?

最佳答案

试试这个:

class ClickHandler implements Runnable {

private static final long WAIT_DELAY = 250;

private int count = 1;
private long lastSubmitTime = System.currentTimeMillis();

@Override
public void run(){
while(System.currentTimeMillis() - lastSubmitTime <= WAIT_DELAY) {
// idle
Thread.yield();
}
MyActivity.runOnUiThread(new Runnable(){

@Override
public void run(){
// fire event for counter
System.out.println("Count: " + count);
}

});

// reset reference so we can start at 0
handler = null;
}

public void recordNewClick(){
count++;
lastSubmitTime = System.currentTimeMillis();
}

}

然后为您的按钮事件处理:

在某处声明该特定按钮的处理程序实例:

private ClickHandler handler;

并将该按钮上的点击事件转发给您的自定义处理程序:

public void onButtonPressed(){
// on input event from your ui component
if(handler == null) {
handler = new ClickHandler();
new Thread(handler).start();
} else {
handler.recordNewClick();
}
}

注意事项:

您还可以避免每次都创建一个新的 Thread,重用现有的 ClickHandler 并将其重置为 0,并等待至少一次点击被提交。

关于java - 如何检测多次点击并最终在 Android 应用程序中仅触发一次更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42300324/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com