代码之家  ›  专栏  ›  技术社区  ›  EquiWare

If(语句)延迟[重复]

  •  0
  • EquiWare  · 技术社区  · 7 年前

    这是一个奇怪的问题,但有没有办法延迟if语句中的最后一行。

    如:

    if(m_Toolbar.getVisibility() == View.VISBILE) {
                   ...........
        m_Toolbar.setVisibility(View.GONE);
    }
    

    你会怎样推迟最后一行呢?

    4 回复  |  直到 7 年前
        1
  •  4
  •   tyczj    7 年前

    请勿 使用 Thread.Sleep() 这将冻结UI使用 Handler

    Handler h = new Handler();
    h.postDelayed(new Runnable() {
                @Override
                public void run() {
    
                }
            },delayMilliseconds);
    
        2
  •  2
  •   Ali Faris    7 年前

    Thread.sleep 将导致UI冻结,我建议使用 Handler 相反

    if(m_Toolbar.getVisibility() == View.VISBILE) {
        ...........
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                m_Toolbar.setVisibility(View.GONE);
            }
        }, 3000);//3 seconds
    }
    
        3
  •  0
  •   Maltanis    7 年前

    您可以使用以下 TimeUnit.SECONDS.sleep(1); 等待一秒钟。

        4
  •  0
  •   Ferhad Konar    7 年前

    最好的是:

     if(m_Toolbar.getVisibility() == View.VISBILE) {
        ...........
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                m_Toolbar.setVisibility(View.GONE);
            }
        }, 5000);//5 seconds
    }
    

    但如果需要多个操作,可以使用以下方法:

          if(m_Toolbar.getVisibility() == View.VISBILE) {
    
                        int Delay = 5;  //set Your request delay
    
                        new Thread(new Runnable(){
                            public void run() {
                                  // TODO Auto-generated method stub
    
                                 do{
                                      try {
    
                                          runOnUiThread(new Runnable() {
                                              public void run() {
    
                                                  Delay --;
    
                                                  if( Delay == 0){
    
                                                      m_Toolbar.setVisibility(View.GONE);
                                                  }else if( Delay == 1){
                                                        //another action
    
                                                   }
    
                                              }
                                          });   
    
                                          Thread.sleep(1000);
    
    
                                      } catch (InterruptedException e) {
                                          //TODO Auto-generated catch block
                                          e.printStackTrace();
                                      } 
    
                                  }while(Delay > 0);
    
                               }
                          }).start();
    
    
    
        }