只有在Java

时间:2018-06-20 05:45:09

标签: java android

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

现在,当我在活动中访问它们时,如何确保仅在func1完全执行后才调用func2。谢谢。

5 个答案:

答案 0 :(得分:2)

如果fun2()中的计时器完成后应始终执行fun1(),则只需在onFinsih()方法内部调用即可,如下所示:

 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回调将在时间到时触发。这将确保您实现预期的行为。

答案 1 :(得分:0)

func2()完成后调用CountDownTimer会不会有错误:

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

实际上,这是唯一可以调用func2()的逻辑位置,因为您不知道倒数是在调用onFinish()之前完成的。

答案 2 :(得分:0)

这是您要找的吗?

public void onFinish() {
    func2();
}

答案 3 :(得分:0)

在Java中,JRE顺序执行每一行中指定的指令。在这里,由于多线程,我发现您有一个特殊要求。

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

选项1:

在func1()的onFinish()方法内调用func2()。因此,您可以确定它在func1()代码执行后仍在执行。

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

选项2:

由于您是在func1()方法中设置等待时间的,因此在您的调用模块中调用func2()之前,请添加计时器。

func1();
setTimeout(function () {
    func2();
}, 5000);

希望有帮助!!

答案 4 :(得分:0)

您可以在func1()的{​​{1}} CountDownTimer方法中调用fun2()。

类似:

onFinish()