Java 定时器外的代码?
我有一个非常简单的问题。使用倒计时,有一个回调方法称为Java 定时器外的代码?,java,android,string,algorithm,timer,Java,Android,String,Algorithm,Timer,我有一个非常简单的问题。使用倒计时,有一个回调方法称为onFinish() new CountDownTimer(10000, 1000) { public void onTick(long millisUntilFinished) { Log.v(TAG, "Ticking"); } public void onFinish() { Log.v(TAG, "Finished timer"); //G
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(标记“现在超出计时器代码”)代码>从不显示。
在计时器完成后,我是否可以通过简单地将代码放在匿名计时器实例化之外的.start()
之后来执行代码
另外,我知道我可以只使用onFinish()
方法,但是为什么不执行计时器外的代码呢?因为您的Log.v(标签,“现在计时器外的代码”)调用CountDownTimer.start()
方法后,code>方法立即执行。这是因为“CountDownTimer”类的“start”方法不会锁定执行线程,因此当您调用它时,计时器会启动并异步执行(创建一个新的执行线程),然后立即执行“Log.v(TAG),在timer code now之外。”)“方法。”,“现在超出计时器代码。”);
方法在调用CountDownTimer.start()
方法后立即执行。这是因为“CountDownTimer”类的“start”方法不会锁定执行线程,因此当调用它时,计时器将启动并异步执行(创建一个新的执行线程)然后立即执行“Log.v(TAG,“现在在计时器代码之外”)”方法。如果从未调用过它,则在start()之后立即执行
或者在计时器完成后,这让我觉得抛出了异常,而您忽略了堆栈跟踪。是否存在/是吗?@AndyTurner好的,您是对的,它在start()之后立即调用
。这是否意味着倒计时是异步的?如果外部
消息在完成
之前出现,则它必须是异步的。如果从未调用它-或者在开始()之后立即调用
或者在计时器完成后,这让我觉得抛出了异常,而您忽略了堆栈跟踪。是否存在/是吗?@AndyTurner好的,您是对的,它在start()之后立即调用
。这是否意味着倒计时是异步的?如果在完成之前出现外部
消息,则它必须是异步的。