gpt4 book ai didi

java - 如何从程序中停止运行

转载 作者:行者123 更新时间:2023-11-30 01:45:01 29 4
gpt4 key购买 nike

我已经阅读了有关停止 Runnnable 的其他帖子;我对此很陌生。

我正在尝试让自定义 View 绘制一个矩形,稍等一下,然后再绘制一个。为了弄清楚 Runnables 是如何工作的,我正在尽我所能阅读并使用 Toast 来查看 Action 被重复了多少次。

如果我通过单击按钮或滑动 slider 之类的操作来停止它,我就会得到一个简单的工作。但是,我希望它自行停止。

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() 返回时立即再次发布收缩对象。

关于java - 如何从程序中停止运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33862526/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com