Android:如何启动和停止在计时器上触发的循环?

问题描述 投票:0回答:1

我的GUI中有两个按钮。 “一转”和“自动播放”。我希望AUTO PLAY按钮开始自动按下计时器上的ONE TURN按钮,我最终将使用滑块或其他东西控制其速度。但是,我想要它,以便当我再次按AUTO PLAY按钮时,它会停止自动激活第一个按钮。自动播放有效,但是停止自动播放无效,并且我不知道如何停止它。也许我完全使用了错误的解决方案,或者也许我只是不知道如何正确停止可运行程序?任何帮助将不胜感激,我已经进行了很多搜索并且没有发现任何有用的东西。我的自动播放点击代码如下:

public void autoClick(final View view) {
    final Handler handler = new Handler();

    isAutoPlaying = !isAutoPlaying;

    final View dummyView = view;
    Runnable runnable = null;

    if(isFirstAutoPlayClick) {
        runnable = new Runnable() {
            @Override
            public void run() {
                onClick(dummyView);
                handler.postDelayed(this, 1000);

            }
        };
        isFirstAutoPlayClick = !isFirstAutoPlayClick;
    }

    if(isAutoPlaying) {
        Toast.makeText(MainActivity.this,"isAutoPlaying is true", Toast.LENGTH_SHORT).show();
        handler.post(runnable);
    } else {
        Toast.makeText(MainActivity.this,"isAutoPlaying is false", Toast.LENGTH_SHORT).show();
        handler.removeCallbacks(null);
    }
}

这里是一张GUI

谢谢您的时间。

java android user-interface handler runnable
1个回答
0
投票

编辑您还需要将处理程序局部变量移动到类字段。

public class Activity{ Handler handler = new Handler(); //<-- Put it here public void autoClick(final View view) { final Handler handler = new Handler(); //<-- Remove this ... } } 因此,在调用handler.removeCallbacksAndMessages()时,您引用的是初始处理程序,而不是新的实例

© www.soinside.com 2019 - 2024. All rights reserved.