我有一个视图类,其中有两个方法,比如说func1和func2。在func1中有一个4秒的计时器。现在,当我在一个活动中访问这些方法时,我只想在func1中的4秒完成后才调用func2。
现在,当我在活动中访问它们时,如何确保仅在func1完全执行后才调用func2。谢谢。
答案 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()