我有一个非常简单的问题。使用CountDownTimer,有一个名为onFinish()
的回调方法,其中可以放置应在计时器完成后执行的代码。
new CountDownTimer(10000, 1000) {
public void onTick(long millisUntilFinished) {
Log.v(TAG, "Ticking");
}
public void onFinish() {
Log.v(TAG, "Finished timer"); //Gets called :)
}
}.start();
Log.v(TAG, "Outside of timer code now."); // NEVER GETS CALLED!?
但是,不会调用计时器onFinish
方法之外的任何代码。
Log.v(TAG, "Outside of timer code now.");
从未显示。
通过简单地在匿名定时器实例化之外的.start()
之后放置代码,我可以做些什么来在定时器完成后执行代码吗?
P.S。我知道我可以使用onFinish()
方法,但为什么不在定时器外执行代码?
答案 0 :(得分:0)
因为您在调用Log.v(TAG, "Outside of timer code now.");
方法后立即执行了CountDownTimer.start()
方法。那是因为"开始"你的" CountDownTimer"的方法class不会锁定你的执行线程,所以当你调用它时,定时器启动并异步执行(创建一个新的执行线程),然后立即执行你的" Log.v(TAG," Outside现在定时器代码。")"方法执行。