无法挂起线程以访问安卓中的用户界面



我正在编程一个线程,当开始执行 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(( 来做到这一点看起来是最简单的方法。

您能否向我建议一些可能的解决方案,以便暂停代码中显示的线程?

我正在编程一个线程,当开始执行 10 秒后,它将使 UI 的一个组件可见:

线程在这里是矫枉过正的,它的使用是不合理的。使用普通Runnable并以所需的延迟(postDelayed()(发布它 - 这对于您的任务来说绰绰有余。

在 android 中有很多方法可以做这样的事情。最常见的一种是,使用这样的处理程序类。

添加此导入行。

import android.os.Handler;

并使用此代码创建新的可运行对象 使用处理程序类。

new Handler().postDelayed(new Runnable() {
@Override
public void run() {
// do your stuff here
}
}, DELAY_IN_MILLI_SECONDS);

最新更新