Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/356.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/229.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 定时器外的代码?_Java_Android_String_Algorithm_Timer - Fatal编程技术网

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()之后立即调用
。这是否意味着倒计时是异步的?如果在
完成之前出现
外部
消息,则它必须是异步的。