4

如何在方法CountDownTimer内访问 UI onTick

(new CountDownTimer(10000,1000){

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

    }

    @Override
    public void onTick(long millisUntilFinished) {
        TextView tv = (TextView)findViewById(R.id.tvLCD);
        tv.setText(Long.toString(millisUntilFinished));
    }           
}).start();
4

3 回答 3

8

从@Sergey Glotov 给出的答案中的链接(GreCode - Handler),很明显倒数计时器根本不使用单独的线程。这就是您能够访问所有 UI 元素的原因。我不知道他们为什么使用处理程序。但它不会产生新线程。它在 UI 线程本身上运行。

于 2012-06-25T11:26:15.537 回答
2

您可以通过Activity.runOnUiTread()View.post()View.postDelayed()通过线程访问 UI HandlerCountDownTimer用于Handler此目的(来源)。

阅读本文以了解如何使用所有这些方法。

于 2011-06-15T08:35:07.967 回答
2

CountDownTimer在 onTick 方法中没有任何访问 UI 的机制。更重要的是,从源代码中,您可以看到它在内部使用了一个在对象创建时获取的处理程序。所以它在创建计时器的线程上运行。

这个问题是不恰当的,在您的情况下,我想您可以访问这些视图,因为您可能CountDownTimer在活动上创建了匿名类。如果你足够幸运,这是在 UI 线程上完成的。

于 2017-05-05T13:35:59.210 回答