Android Runnable Handler 不会以指定的时间间隔(秒)停止

Android Runnable Handler not stop at specified intervals(seconds)

我正在使用 Runnable Handler 以指定的时间间隔更新我的 UI。但是,在按钮单击事件中,我的这个计时器停止了,但在指定的时间间隔内它继续运行。这是我的代码。

public class MainActivity extends ActionBarActivity {
public TextView myCounter;
private int mInterval=50;
private Handler mHandler;
int i=1;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    mHandler = new Handler();
    myCounter = (TextView) findViewById(R.id.myCounter);
}
Runnable mStatusChecker=new Runnable() {
    @Override
    public void run() {

        updateCounter();
        mHandler.postDelayed(mStatusChecker,mInterval);
    }
};

void updateCounter(){
    myCounter.setText(""+i++);
    if(i==36)
    {
        stopRepeatingTask();
    }
    if(i==66)
    {
        stopRepeatingTask();
    }
    if(i==96)
    {
        stopRepeatingTask();
    }

}
void startRepeatingTask()
{
    mStatusChecker.run();
}

void stopRepeatingTask()
{
    mHandler.removeCallbacks(mStatusChecker);
}
public void StopClick(View view)
{
    stopRepeatingTask();
}

public void StartClick(View view)
{
startRepeatingTask();
}
}

UpdateCounter 函数保持 运行 甚至 i ==36 或 66 或 96 的值。但是当我单击 StopClick 按钮单击事件时它会停止。 需要帮助。

据我所知,你停止了任务。此停止是在 updateCounter() 中完成的,但是之后您可以使用 mHandler.postDelayed(mStatusChecker,mInterval);

再次启动处理程序

您可以在停止计数器时设置一个布尔值

void stopRepeatingTask()
{
    isCancelled = true;
    mHandler.removeCallbacks(mStatusChecker);
}

以便您可以签入 Runnable

if (!isCancelled) {
    mHandler.postDelayed(mStatusChecker,mInterval);
}