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();
答案 0 :(得分:8)
根据@Sergey Glotov给出的答案中的链接( GreCode - Handler ),显然倒数计时器根本不使用单独的线程。这就是您能够访问所有UI元素的原因。我不知道为什么他们使用了处理程序。但它不会产生新的线程。它在UI线程上运行。
答案 1 :(得分:2)
您可以通过Activity.runOnUiTread()
,View.post()
,View.postDelayed()
或Handler
从线索访问用户界面。 CountDownTimer
为此目的使用Handler
(source)。
阅读this article以了解如何使用所有这些方法。
答案 2 :(得分:0)
CountDownTimer
没有任何机制来访问onTick方法中的UI。
更重要的是,从源代码中,您可以看到内部它使用在创建对象时采用的处理程序。所以它在创建计时器的线程上运行。
问题是不适合的,在您的情况下,我认为您可以访问这些视图,因为您可能会在活动中创建CountDownTimer
匿名类。如果你足够幸运,这是在UI线程上完成的。