gpt4 book ai didi

java - 如何让定时器任务等到 runOnUiThread 完成

转载 作者:搜寻专家 更新时间:2023-11-01 08:12:16 25 4
gpt4 key购买 nike

我需要在特定时间段后更新 UI,为此我创建了一个计时器计划,并在其中调用了 runOnUiThread。

timer.scheduleAtFixedRate(new TimerTask() {

public void run() {
System.out.println("1");
try {

System.out.println("2");
System.out.println("3");

runOnUiThread(new Runnable() {

public void run() {
System.out.println("4");
System.out.println("5");
System.out.println("6");
System.out.println("7");
}
});

System.out.println("8");
} catch (Exception e) {

e.printStackTrace();
}

}

}, delay, period);
System.out.println("9");

我遇到的问题是,在达到“3”后,计时器线程跳转到“8”,然后 UI 线程从“4”开始运行。我想让计时器线程等到 UI 线程在“7”完成它的工作,然后它才应该移动到“8”。

示例输出

01-05 00:30:16.308: I/System.out(1394): 1
01-05 00:30:16.308: I/System.out(1394): 2
01-05 00:30:16.308: I/System.out(1394): 3
01-05 00:30:16.308: I/System.out(1394): 8
01-05 00:30:16.308: I/System.out(1394): 4
01-05 00:30:16.308: I/System.out(1394): 5
01-05 00:30:16.308: I/System.out(1394): 6
01-05 00:30:16.308: I/System.out(1394): 7
01-05 00:30:17.307: I/System.out(1394): 1
01-05 00:30:17.307: I/System.out(1394): 2
01-05 00:30:17.307: I/System.out(1394): 3
01-05 00:30:17.307: I/System.out(1394): 8
01-05 00:30:17.307: I/System.out(1394): 4
01-05 00:30:17.323: I/System.out(1394): 5
01-05 00:30:17.323: I/System.out(1394): 6
01-05 00:30:17.323: I/System.out(1394): 7

最佳答案

试试这个

Object lock=new Object();
timer.scheduleAtFixedRate(new TimerTask() {

public void run() {
System.out.println("1");
try {

System.out.println("2");
System.out.println("3");

runOnUiThread(new Runnable() {

public void run() {
System.out.println("4");
System.out.println("5");
System.out.println("6");
System.out.println("7");
synchronized(lock){lock.notify();}
}
});
try{
synchronized(lock){lock.wait();}
}catch(InterruptedException x){}
System.out.println("8");
} catch (Exception e) {

e.printStackTrace();
}

}

}, delay, period);
System.out.println("9");

关于java - 如何让定时器任务等到 runOnUiThread 完成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8732987/

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