JAVA.wait()用于在运行android studio方法之前等待
所以,我在安卓工作室工作,试图在两种方法之间设置一个暂停。在第一个窗口中,加载gif,在第二个窗口中显示弹出消息。我曾尝试使用Thread.sleep和下面的TimeUnit,但它们都是在运行其他所有操作之前等待时间的方式执行的。换句话说,下面的代码等待4秒钟,然后同时运行gameGif()和gameFinish()。以下是我的代码:JAVA.wait()用于在运行android studio方法之前等待,java,android,wait,thread-sleep,Java,Android,Wait,Thread Sleep,所以,我在安卓工作室工作,试图在两种方法之间设置一个暂停。在第一个窗口中,加载gif,在第二个窗口中显示弹出消息。我曾尝试使用Thread.sleep和下面的TimeUnit,但它们都是在运行其他所有操作之前等待时间的方式执行的。换句话说,下面的代码等待4秒钟,然后同时运行gameGif()和gameFinish()。以下是我的代码: gameGif(); { try { TimeUn
gameGif();
{
try
{
TimeUnit.SECONDS.sleep(4);
}
catch(InterruptedException ex)
{}
}
gameFinish();
这对我有用
gameGif();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
gameFinish();
}
}, 4000);
您正在做的是设置更新UI的意图。实际的UI更新是由Android Looper在代码中单独执行的。实际上,通过调用
wait()
,您实际上阻止了渲染线程进行更新
正如Matus所说,使用处理程序是正确的方法。处理程序
将使用活套
组织调度,并且仍然允许活套运行(即非阻塞)。超时时间过后,它将调用Runnable
使用这种方法需要注意的一件事是在UI循环上调用处理程序(即,从一个“正常”的Android方法)。如果您从自己的线程调用它,它将无法与活套正确交互。您正在传递的值太小,因为它以毫秒为单位,如果您希望它停止4秒,通过4000秒,它可能没有您描述的行为,但您的睡眠占用了CPU,因此此线程中无法运行任何东西。安卓肯定有与java.awt.image.ImageObserver相当的?