繁体   English   中英

延迟一会儿循环

[英]Delaying a while loop

(Android)如何在执行另一个循环之前让一个循环等待一小段时间(例如半秒)?

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

所以我想要的是我的应用程序在doSomething2()方法之后不久就“等待”。 Google这次无法帮助我:D

您可以尝试使用处理程序

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

例如,如果希望while循环每1000毫秒执行一次,则可以执行以下操作:

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

handler.postDelayed(r, 1000);

这将每1000ms执行一次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();

}
Thread.sleep(500);

在继续之前,这会使您的代码休眠半秒钟。 请注意,然后您将需要适当地处理InterruptedException

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM