如何从程序中停止运行
How to stop runnable from within program
我已经阅读了有关停止 Runnnable 的其他帖子;我对此很陌生。
我正在尝试让自定义视图绘制一个矩形,稍等一下,然后再绘制一个。为了弄清楚 Runnables 是如何工作的,我正在尽我所能阅读并使用 Toast 来查看动作被重复了多少次。
如果我通过单击按钮或滑动滑块之类的操作来停止它,我已经得到了一个简单的工作。但是,我希望它自行停止。
h = new Handler();
// assorted details -- I'm using a Slider for user input.
public void onStopTrackingTouch (SeekBar firstSlider){
if(((addend1 > 0) && (addend2<0))||(addend1<0&&addend2>0) )
{
h.post(shrink);
}
}
});
private Runnable shrink = new Runnable(){
@Override
public void run() {
for (int j = 0; j < 4; j++){
Toast.makeText(getApplicationContext(), "Subtract!", Toast.LENGTH_SHORT).show();
tempadd++;
Log.i("WatchAnimActivity", "tempadd is " + tempadd);
checkTemp();
h.postDelayed(shrink, 18000);
}
}};
public void checkTemp()
{
if (tempadd >= 2)
Log.i("WatchAnimActivity", "tempadd in Check Temp is " + tempadd);
h.removeCallbacks(shrink);}
}
我也试过这个:
public void checkTemp( { h.removeCallbacks(shrink); }
我无法理解为什么 Android 似乎在做 "checkTemp" 但...不会删除回调。当它停止时,我将第二个 SLider 设置为 h.removeCallbacks(shrink),并且工作正常。为什么它无法 h.removeCallbacks 即使它承认 tempadd 是“远远大于二”?
希望这里出现蹩脚的语法新手错误...
因为你在调用checkTemp()
并移除回调,然后在checkTemp()
returns.
时立即post再次收缩对象
我已经阅读了有关停止 Runnnable 的其他帖子;我对此很陌生。
我正在尝试让自定义视图绘制一个矩形,稍等一下,然后再绘制一个。为了弄清楚 Runnables 是如何工作的,我正在尽我所能阅读并使用 Toast 来查看动作被重复了多少次。
如果我通过单击按钮或滑动滑块之类的操作来停止它,我已经得到了一个简单的工作。但是,我希望它自行停止。
h = new Handler();
// assorted details -- I'm using a Slider for user input.
public void onStopTrackingTouch (SeekBar firstSlider){
if(((addend1 > 0) && (addend2<0))||(addend1<0&&addend2>0) )
{
h.post(shrink);
}
}
});
private Runnable shrink = new Runnable(){
@Override
public void run() {
for (int j = 0; j < 4; j++){
Toast.makeText(getApplicationContext(), "Subtract!", Toast.LENGTH_SHORT).show();
tempadd++;
Log.i("WatchAnimActivity", "tempadd is " + tempadd);
checkTemp();
h.postDelayed(shrink, 18000);
}
}};
public void checkTemp()
{
if (tempadd >= 2)
Log.i("WatchAnimActivity", "tempadd in Check Temp is " + tempadd);
h.removeCallbacks(shrink);}
}
我也试过这个:
public void checkTemp( { h.removeCallbacks(shrink); }
我无法理解为什么 Android 似乎在做 "checkTemp" 但...不会删除回调。当它停止时,我将第二个 SLider 设置为 h.removeCallbacks(shrink),并且工作正常。为什么它无法 h.removeCallbacks 即使它承认 tempadd 是“远远大于二”?
希望这里出现蹩脚的语法新手错误...
因为你在调用checkTemp()
并移除回调,然后在checkTemp()
returns.