gpt4 book ai didi

java - 如何停止一系列 postDelayed 处理程序

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:38:22 25 4
gpt4 key购买 nike

我有一系列 postDelayed 处理程序。当用户在他想要的任何时间点击停止按钮时,我无法设置停止处理程序的 mathode。

如果有人能提供任何帮助,我将不胜感激。谢谢

while (!lessonIsRunning) {
Handler handler0 = new Handler();
handler0.postDelayed(new Runnable() {
@Override
public void run() {
plate1.setVisibility(ImageView.VISIBLE);
plate2.setVisibility(ImageView.VISIBLE);
plate3.setVisibility(ImageView.VISIBLE);
}
}, 6000);

Handler handler1 = new Handler();
handler1.postDelayed(new Runnable() {
@Override
public void run() {
apples1.setVisibility(ImageView.VISIBLE);
}
}, 9000);

Handler handler2 = new Handler();
handler2.postDelayed(new Runnable() {
@Override
public void run() {
plus1.setVisibility(TextView.VISIBLE);
}
}, 9250);
}
public void stopLesson(View V){

}

最佳答案

不是以匿名方式编写 Runnable 任务,您必须用名称定义它,以便稍后您将有一个指向它的链接以删除:

//there is no need for multiple handlers 
//handler must be declared outside all functions, in order for you to use it everywhere.

Handler handler = new Handler();
Runnable myFirstTask = new Runnable (){
@Override
public void run() {
plate1.setVisibility(ImageView.VISIBLE);
plate2.setVisibility(ImageView.VISIBLE);
plate3.setVisibility(ImageView.VISIBLE);
} };

Runnable mySecondTask = new Runnable(){
@Override
public void run() {
plus1.setVisibility(TextView.VISIBLE);
}

};

Runnable myThirdTask = new Runnable(){
@Override
public void run() {
apples1.setVisibility(ImageView.VISIBLE);
} }

//you can put different tasks on the same handler object

while (!lessonIsRunning) {
handler.postDelayed(myFirstTask,6000);
handler.postDelayed(mySecondTask,9250);
handler.postDelayed(myThirdTask,9000);
}
public void stopLesson(View V){
//notice that you don't need these, because the handlers are not recursive
//you don't have lines "handler.postDelayed(sameTask,someTime);"
//in your run Method of the runnable
if(handler!=null){
handler.removeCallbacks(myFirstTask);
handler.removeCallbacks(mySecondTask);
handler.removeCallbacks(myThirdTask);
//if this method is inside onPause or onDestroy add this line as well:
handler=null;

}
}

关于java - 如何停止一系列 postDelayed 处理程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15229045/

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