CountDownTimer如何在OnTick方法中访问UI?

时间:2011-06-15 08:01:12

标签: android layout countdowntimer

CountDownTimer如何访问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();

3 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:2)

您可以通过Activity.runOnUiTread()View.post()View.postDelayed()Handler从线索访问用户界面。 CountDownTimer为此目的使用Handlersource)。

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

答案 2 :(得分:0)

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

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