android - 如果在延迟倒计时期间中断,如何重新启动处理程序延迟后进程

标签 android handler counter runnable postdelayed

我有一个我无法解决的问题。我有一个按钮,单击它会更改 TextView 。然后,它会激活一个 postdelayed 过程,该过程会在 2 秒后将 textview 返回到其原始文本。

如果我按下按钮一次,然后在这 2 秒的间隔内再次按下,postdelay 将继续从第一次按下开始倒计时,而不是从第二次按下开始重新启动。当我想要更改的文本时,这会导致显示原始文本。

每次按下按钮时,它都会从该实例创建一个延迟。我希望它取消之前的 postdelay 并开始一个新的。到目前为止,这是我的代码,但还没有完成,因为我不知道如何完成它(所以它不起作用)。

p1AddL.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            counter1 ++;
            count1 ++;
            Handler h = new Handler();
            if ('PREVIOUS_DELAY_HAS_STARTED') {
                h.removeCallbacks(clickButton);
                h.postDelayed(clickButton, 2000);
            } else {
                h.postDelayed(clickButton, 2000);
            }
            if (count1 > 0) {
                lifepointsP1.setText("+" + count1);
                lifepointsP1.setTextColor(Color.argb(220, 0, 188, 0));
            }
        }
    });

Runnable clickButton = new Runnable() {
    @Override
    public void run() {
        count1 = 0;
        lifepointsP1.setTextColor(Color.WHITE);
        lifepointsP1.setText(counter1);
    }
};

PREVIOUS_DELAY_HAS_STARTED 文本需要某种检查方法,我很确定我需要介于 h.removeCallbacksh.postDelayed< 之间的东西 该文本下的命令。

如果他们是编写此方法以使其工作的更简单/更好的方法,请告诉我。我尝试了很多方法,我觉得我离这里很近了。

最佳答案

如果 clickButton 没有在 h 上注册,removeCallbacks 将不会做任何事情。所以你可以简单地替换

if ('PREVIOUS_DELAY_HAS_STARTED') {
    h.removeCallbacks(clickButton);
    h.postDelayed(clickButton, 2000);
} else {
    h.postDelayed(clickButton, 2000);
}

h.removeCallbacks(clickButton);
h.postDelayed(clickButton, 2000);

关于android - 如果在延迟倒计时期间中断,如何重新启动处理程序延迟后进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25283819/

相关文章:

android - handler.removeCallbacksAndMessages 不工作

android - 使用 DrawerLayout 打开 Activity 时如何消除延迟?

Java,使用接口(interface)作为回调

java - Delete with body 仍然不适用于 Retrofit

setValue(true) 时 gwt 复选框触发处理程序

python - 保留出现 N 次或更多次的字符串

Android Gradle 库依赖与使用 Nexus 的库依赖

c# - C# WinForms 应用程序中的应用程序范围的消息处理程序

java - 在冒泡排序中使用计数器

python - Counter()+=Counter 和 Counter.update(Counter) 哪个更快?