延迟一个while循环

时间:2015-02-09 19:22:56

标签: java android while-loop wait

(Android)如何在进行另一次循环之前让循环等待很短的时间(如半秒)?

void replaceText(String s)
{
    doSomething1();
    int x = 0;
    while (x < 5)
    {
        doSomething2();
        x++;
    }
    doSomething3();
}

所以我想要的是我的应用程序&#34;等待&#34;方法doSomething2()之后的短时间。谷歌这次无法帮助我:D

3 个答案:

答案 0 :(得分:3)

您可以尝试使用处理程序

   // Execute some code after 1 second have passed
            Handler handler = new Handler(); 
            handler.postDelayed(new Runnable() { 
                 public void run() { 
                      doSomething2();
                 } 
            }, 1000); 

答案 1 :(得分:2)

如果你想让你的while循环每1000毫秒执行一次,你可以这样做:

final Handler handler=new Handler();
Runnable r=new Runnable() {
    public void run() {
        doSomething2(); 
        handler.postDelayed(this, 1000);              
    }
};

handler.postDelayed(r, 1000);

这将每1000毫秒执行一次doSomething2()


具体到您的示例,您也可以尝试以下选项:

void replaceText(String s)
{
    doSomething1();
    int x = 0;
    while (x < 5)
    {
        Thread.sleep(100);
        doSomething2();
        x++;
    }
    doSomething3();
}

请注意,由于Thread.sleep会停止线程,因此请确保在非UI线程上运行此函数。一个天真的实现将是:

void replaceText(String s)
{
final String str = s;
    Thread thread = new Thread() {
        @Override
        public void run() {
               // user str instead of s;
               doSomething1();
               int x = 0;
               while (x < 5)
                   {
                      Thread.sleep(100);
                      doSomething2();
                      x++;
                   }
               doSomething3();
          }
    };

    thread.start();

}

答案 2 :(得分:-1)

Thread.sleep(500);

在继续之前,会导致代码休眠半秒钟。请注意,您需要适当地处理InterruptedException