我正在编写一个线程,当它开始执行10秒后,它将显示UI的一个组件:
代码如下:
Thread buttonThread=null; // this is a global variable
[...]
buttonThread = new Thread()
{
@Override
public void run()
{
try
{
super.run();
sleep(10000); //Delay of 10 seconds
} catch (Exception e)
{
}
finally
{
try
{
buttonThread.suspend();
cont.setVisibility(View.VISIBLE);
buttonThread.destroy();
}
catch (Exception e)
{
e.printStackTrace();
}
}
}
};
buttonThread.start();
但是当我尝试执行buttonThread.suspend()时,我得到了一个java.lang.UnsupportedOperation异常。
我知道使用suspend是不安全的,这就是它被弃用的原因,但是我想首先检查挂起线程是否正常工作,并通过调用.suspend()看起来是最简单的方法。
请问您能给我一些可能的解决方案,以便代码中显示的线程暂停吗?
答案 0 :(得分:2)
我正在编写一个线程,当它开始执行10秒后,它将显示UI的一个组件:
线程在这里过度杀伤,并且使用它不合理。使用普通Runnable
并以所需的延迟(postDelayed()
)发布 - 这对您的任务来说已经足够了。
答案 1 :(得分:1)
在android中有很多方法可以做这样的事情。最常见的是,使用像这样的Handler类。
添加此导入行。
import android.os.Handler;
并使用此代码使用处理程序类创建新的runnable。
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// do your stuff here
}
}, DELAY_IN_MILLI_SECONDS);