【发布时间】: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