我尝试设置ImageView时出现线程休眠错误

时间:2012-11-23 14:14:57

标签: android

运行此代码时出现错误,每次我在睡眠方法上设置时间时都会收到错误并关闭应用程序。

im = (ImageView) findViewById(R.id.imag1);

    Thread t = new Thread() {
        public void run() {
            try {
                sleep(5000);

            } catch (InterruptedException e) {
                e.printStackTrace();
            } finally {

                im.setImageResource(R.drawable.primeiro_misterio_gozoso07);
            }
        }
    };
    t.start();

我该如何解决?

3 个答案:

答案 0 :(得分:0)

可以触摸或修改其视图的唯一线程是UI线程(MainThread),而您可以像这样使用CountDownTimer

CountDownTimer timer = new CountDownTimer(1000,5000) 
 {
      @Override
       public void onTick(long l){}

       @Override
       public void onFinish(){
          im.setImageResource(R.drawable.primeiro_misterio_gozoso07);
       };
 }.start();

答案 1 :(得分:0)

您无法从非ui线程访问ui,您可以使用处理程序完成相同的操作。

new Handler().postDelayed(new Runnable(){
        @Override
        public void run() {
            im.setImageResource(R.drawable.primeiro_misterio_gozoso07);
        }
    }, 5000);

答案 2 :(得分:0)

您无法从后台线程访问UI。你只能通过主线程做。一个解决方法是

// SLEEP 5 SECONDS HERE ...
    Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
         public void run() { 
              // do your work here
         } 
    }, 5000);