如果(声明)延迟

时间:2018-01-18 16:39:11

标签: java android if-statement time delay

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

例如:

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

你会如何推迟最后一行(即.GONE)?

4 个答案:

答案 0 :(得分:4)

不要使用会冻结用户界面的Thread.Sleep()使用Handler

Handler h = new Handler();
h.postDelayed(new Runnable() {
            @Override
            public void run() {

            }
        },delayMilliseconds);

答案 1 :(得分:2)

Thread.sleep会导致用户界面冻结,我建议使用Handler代替

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

最好的是:

 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();



    }