繁体   English   中英

无法挂起线程以访问Android中的UI

[英]Cannot suspend thread to access UI in Android

我正在编程一个线程,自开始执行起经过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中执行类似的操作。 最常见的是使用这样的Handler类。

添加此导入行。

import android.os.Handler;

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM