【问题标题】:Android Runnable Handler not stop at specified intervals(seconds)Android Runnable Handler 不会以指定的时间间隔(秒)停止
【发布时间】:2015-06-16 23:36:43
【问题描述】:

我正在使用 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();
}
}

即使 i ==36 或 66 或 96 的值,UpdateCounter 函数也会继续运行。但是当我单击 StopClick 按钮单击事件时它会停止。 需要帮助。

【问题讨论】:

  • 这无助于解决您的问题,但您可以缩短 updateCounter 方法中的条件:if(i == 36 || i == 66) 或者您可以使用一个通过的开关块
  • 意味着它的逻辑问题?
  • if(i==36) { stopRepeatingTask(); } 我只留下了这个但仍然是同样的问题

标签: java android runnable android-handler


【解决方案1】:

据我所知,你停止了任务。这个停止是在updateCounter() 中完成的,但是之后你再次使用mHandler.postDelayed(mStatusChecker,mInterval); 启动处理程序

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

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

这样你就可以检查你的 Runnable

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

【讨论】:

    猜你喜欢
    • 2013-09-11
    • 1970-01-01
    • 2016-06-20
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-24
    • 2020-01-02
    相关资源
    最近更新 更多