2012-07-26 57 views
0

那麼,我想設置一個按鈕與setBackground(),但在此更新後,我想睡在500毫秒線程和設置另一個背景在同一個按鈕後,所有這一切都在onTouch方法。 示例如何用睡眠[android]更新setBackground?

public boolean onTouch(View v,MotionEvent event){ 
switch(event.getAction()){ 
case MotionEvent.ACTION_UP: 
    button.setBackground(R.drawable.bckg1); 
    try{ 
     Thread.sleep(500); 
     button.setBackground(R.drawable.bckg2); 
    }catch(Exception e){} 
    break; 
} 
+1

嗨。歡迎來到SO ..你的問題不清楚。你能改說嗎? – 2012-07-26 04:54:50

+0

爲此,請使用[AsynkTask或Handlers](http://www.vogella.com/articles/AndroidPerformance/article.html)。 – param 2012-07-26 05:45:00

回答

0

您不應該讓主(UI)線程進入睡眠狀態。 android線程模型有兩個規則1)不要阻塞主線程超過5秒鐘(否則你會得到一個應用程序無響應崩潰)2)不要從主線程操縱UI。你試圖違反第一條規則,即使你只睡500次。

取而代之,使用一個處理程序並在5000毫秒後發佈延遲的可運行內容,然後在可運行內部更新按鈕的背景。