如何在android中使用handler作为计时器?

时间:2016-08-07 11:32:54

标签: android timer handler

    Handler handler = new Handler();    
    if (v.getId() == R.id.play){    
       handler.postDelayed(new Runnable() {                    
       public void run() {
           play.setBackgroundResource(R.drawable.ilk);
       }
   }, 2000);    
       play.setText("Play");    
}

我想首先设置背景,然后在2秒之后,代码将继续下一行play.setText("Play");并且这样做。而不是这样,第一个文本出现。 2秒后背景改变。

2 个答案:

答案 0 :(得分:4)

Handler.postDelayed立即返回。然后执行下一行。 在指示毫秒后,将执行Runnable

所以你的代码应该是这样的:

void doFirstWork() {
    Handler handler = new Handler();

    if (v.getId() == R.id.play){

       handler.postDelayed(new Runnable() {
           public void run() {
               play.setText("Play");
               doNextWork();
           }
       }, 2000);

       play.setBackgroundResource(R.drawable.ilk);
    }
}

void doNextWork() {
    ...
}

答案 1 :(得分:1)

先设置背景。之后在Handler中设置文本。因为你在postDelayed结束时放了延迟所以它会在所述延迟之后立即开始,或者在你的情况下在2秒后开始。

if (v.getId() == R.id.play){
   play.setBackgroundResource(R.drawable.ilk);
   new Handler().postDelayed(new Runnable() {
       public void run() {
           play.setText("Play");
       }
   }, 2000);

}