如何仅在java中完全执行前一个函数后调用函数

如何仅在java中完全执行前一个函数后调用函数,java,android,Java,Android,我有一个视图类,它有两个方法,比如func1和func2。在func1中,有一个4秒的计时器。现在,当我在活动中访问这些方法时,我只想在func1中的4秒完成后调用func2 现在,当我在活动中访问这些时,如何确保只有在func1完全执行后才调用func2。谢谢。如果fun2()应该总是在fun1()中的计时器完成后执行,那么只需在onfinish()方法中调用它,如下所示: public void func1(){ new CountDownTimer(4000, 1000) {

我有一个视图类,它有两个方法,比如func1和func2。在func1中,有一个4秒的计时器。现在,当我在活动中访问这些方法时,我只想在func1中的4秒完成后调用func2

现在,当我在活动中访问这些时,如何确保只有在func1完全执行后才调用func2。谢谢。

如果
fun2()
应该总是在
fun1()
中的计时器完成后执行,那么只需在
onfinish()
方法中调用它,如下所示:

 public void func1(){
     new CountDownTimer(4000, 1000) {
        @Override
        public void onTick(long millisUntilFinished) {
            // TODO Auto-generated method stub
        }

        @Override
        public void onFinish() {
          func2();
        }
    }.start();


}

public void func2(){

}

这是调用函数的好地方,原因是,
onFinish
回调将在时间结束时触发。这将确保实现您的预期行为。

倒计时结束后调用
func2()
是否有任何错误:

@Override
public void onFinish() {
// TODO Auto-generated method stub
    func2();
}

实际上,这是调用
func2()
唯一合理的地方,因为在调用
onFinish()
之前,您不知道倒计时已经结束。

这就是您要找的吗

public void onFinish() {
    func2();
}

在java中,JRE按顺序执行每行中指定的指令。在这里,我看到您有一个特殊的要求,因为多线程

以下方法可用于解决此问题:

选项1:

    public void func1(){
     new CountDownTimer(4000, 1000) {
                @Override
                public void onTick(long millisUntilFinished) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onFinish() {
                     func2();
                }
            }.start();
    }

public void func2(){

}
在属于func1()的onFinish()方法中调用func2()。这样您就可以确定它是在func1()代码执行之后执行的

    @Override
    public void onFinish() {
      func2();
    }
选项2:

    public void func1(){
     new CountDownTimer(4000, 1000) {
                @Override
                public void onTick(long millisUntilFinished) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onFinish() {
                     func2();
                }
            }.start();
    }

public void func2(){

}
由于要在func1()方法中设置等待时间,请在调用模块中调用func2()之前添加计时器

func1();
setTimeout(function () {
    func2();
}, 5000);
希望能有帮助

您可以在
onFinish()
中的
func1()
倒计时方法中调用fun2()

如:

    public void func1(){
     new CountDownTimer(4000, 1000) {
                @Override
                public void onTick(long millisUntilFinished) {
                    // TODO Auto-generated method stub

                }

                @Override
                public void onFinish() {
                     func2();
                }
            }.start();
    }

public void func2(){

}

请解释在什么情况下要调用func1和func2。如果在func1未完成时调用func2,您希望发生什么情况?