在Android(Java)中设置延迟

在Android(Java)中设置延迟,java,android,multithreading,wait,Java,Android,Multithreading,Wait,我想在我的代码中设置大约60秒的延迟。我用了下面的代码,把一些延迟;但它的行为并不像预期的那样 new Handler().postDelayed(new Runnable() { @Override public void run() { //Calling my function after 15 seconds delay. } }, 15000); p、 我不想使用Thread.sleep(),因为它会妨碍应用程序的正常运行。您可以尝试倒计时 /

我想在我的代码中设置大约60秒的延迟。我用了下面的代码,把一些延迟;但它的行为并不像预期的那样

new Handler().postDelayed(new Runnable() {
    @Override
    public void run() {
        //Calling my function after 15 seconds delay.
    }
}, 15000);

p、 我不想使用Thread.sleep(),因为它会妨碍应用程序的正常运行。

您可以尝试倒计时

// You can change millisInFuture and countDownInterval according to your need.
long millisInFuture = 60000;
long countDownInterval = 1000;

new CountDownTimer(millisInFuture, countDownInterval) {
     @Override
     public void onTick(long l) {
         // Method call according to countDownInterval.
         // For E.g we are taking 1000 so this method call every 1 second.
     }

     @Override
     public void onFinish() {
         // When 60 second completed call this method.
         // Do your logic here.
     }
}.start();
你想这样做的实际事情。

long millisInFuture=60000;
长倒计时间隔=1000;
int计数器=0;
新的倒计时(毫秒未来,倒计时间隔){
@凌驾
公共空白条(长l){
//方法根据倒计时间隔调用。
//例如,我们取1000,因此此方法每1秒调用一次。
}
@凌驾
公共无效onFinish(){
//完成60秒后,调用此方法。
//在这里做你的逻辑。
计数器++;
如果(计数器==1){
//调用您的第一个函数
}否则如果(计数器==2){
//调用第二个函数
}否则如果(计数器==3){
//调用第三个函数
}否则如果(计数器==4){
//调用你的第四个函数
}否则如果(计数器==5){
//调用你的第五个函数
}
如果(计数器<5){
start();
}
}
}.start();

为什么该代码行为不正确?请改进您问题中的拼写和点字。为什么
15000
?@IntelliJAmiya“延迟15秒后调用我的函数”在类顶部检查您的导入可能导入错误一个处理程序导入必须是
android.os.Handler
您可以通过将代码放入for循环来检查自己,或者可以反复编写两到三次,以了解onFinish()@waqas的行为。此代码是我的工作应用程序之一,它是工作代码。你说过在for循环中使用这个代码。你能告诉我你到底想做什么吗?我有五个不同的功能,我想在一分钟后分别调用。首先,您不能使用for循环来进行此操作。现在您希望在1分钟后调用每个函数,因此每当onFinish()调用时,您可以再次调用此方法并调用您的函数5次。@waqas查看我的更新答案您正在寻找的东西您可以这样做。
long millisInFuture = 60000;
    long countDownInterval = 1000;
    int counter = 0;

    new CountDownTimer(millisInFuture, countDownInterval) {
        @Override
        public void onTick(long l) {
            // Method call according to countDownInterval.
            // For E.g we are taking 1000 so this method call every 1 second.
        }

        @Override
        public void onFinish() {
            // When 60 second completed call this method.
            // Do your logic here.
            counter++;
            if (counter == 1) {
                // Call your 1st function
            } else if (counter == 2) {
                // Call your 2nd function
            } else if (counter == 3) {
                // Call your 3rd function
            } else if (counter == 4) {
                // Call your 4th function
            } else if (counter == 5) {
                // Call your 5th function
            }

            if (counter < 5) {
                start();
            }
        }
    }.start();