2011-12-03 69 views
13

让我的程序进入睡眠状态有一些问题 当我按下btnStart键时,第一次随机设置图像为12 ImageButtons 然后我想让它暂停5秒,然后更改第一个的ImageButton到另一张照片Android程序中的睡眠功能

我的代码看起来是这样的,现在它暂停时按下按钮,马上...

 btnStart.setOnClickListener(new View.OnClickListener() { 
     @Override 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      Collections.shuffle(pic); 
      int time=1; 
      press=true; 

      pic.get(0).setImageDrawable(getResources().getDrawable(R.drawable.memgreen)); 
      pic.get(1).setImageDrawable(getResources().getDrawable(R.drawable.memgreen)); 
      pic.get(2).setImageDrawable(getResources().getDrawable(R.drawable.memred)); 
      pic.get(3).setImageDrawable(getResources().getDrawable(R.drawable.memred)); 
      pic.get(4).setImageDrawable(getResources().getDrawable(R.drawable.memblue)); 
      pic.get(5).setImageDrawable(getResources().getDrawable(R.drawable.memblue)); 
      pic.get(6).setImageDrawable(getResources().getDrawable(R.drawable.memwhite)); 
      pic.get(7).setImageDrawable(getResources().getDrawable(R.drawable.memwhite)); 
      pic.get(8).setImageDrawable(getResources().getDrawable(R.drawable.mempurple)); 
      pic.get(9).setImageDrawable(getResources().getDrawable(R.drawable.mempurple)); 
      pic.get(10).setImageDrawable(getResources().getDrawable(R.drawable.memyellow)); 
      pic.get(11).setImageDrawable(getResources().getDrawable(R.drawable.memyellow)); 

      try { 
       Thread.sleep(5000); 

       pic.get(0).setImageDrawable(getResources().getDrawable(R.drawable.coin)); 

      } catch (InterruptedException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
    } 
    }); 
+0

问题是什么? – GETah

回答

22

好吧,如果你想在用户界面保持响应,你不能阻止那里有Thread.sleep的UI线程。

创建一个新线程,然后进入睡眠状态。睡眠后,运行更改UI线程上可绘制视图的方法

new Thread(new Runnable() { 
    @Override 
    public void run() { 
     try { 
      Thread.sleep(5000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
     runOnUiThread(new Runnable() { 
      @Override 
      public void run() { 
       pic.get(0).setImageDrawable(getResources().getDrawable(R.drawable.coin)); 
      } 
     }); 
    } 
}).start(); 
+2

或使用AsyncTask:http://android-developers.blogspot.com/2009/05/painless-threading.html –

+0

谢谢!即时消息新,但它是非常有道理的。现在工作:) – Fredkr