在Android中更新时钟

时间:2012-11-21 17:56:35

标签: java android

我正在寻找在Android中实现自我更新数字时钟的最简单的解决方案。我知道已有数字时钟类:http://developer.android.com/reference/android/widget/DigitalClock.html 是的,它也被弃用了。从API 17开始,我们现在使用TextClock。无论如何为了学习我想让我自己的自定义时钟显示hh:mm:ss当然应该更新自己。

到目前为止,我参考了我的textview(将显示数字时钟),并且我获得了Calendar类的实例,并且我还为实例变量签署了分钟,小时和秒:

Calendar cal = Calendar.getInstance();
            hour = cal.get(Calendar.HOUR_OF_DAY);
            min = cal.get(Calendar.MINUTE);
            sec = cal.get(Calendar.SECOND);
                clock.setText(hour+":"+min+":"+sec);

如果我运行此代码,模拟器上会显示准确的时间,但显然它没有更新。我必须做什么,所以我的代码将“循环”并更新我的时钟?

我已经检查了这个很好的答案:Android: How do I display an updating clock in a TextView但我的问题是:我想在android中最简单的数字时钟解决方案=)我还需要使用Handler吗?

2 个答案:

答案 0 :(得分:3)

使用Handler并不困难。一种可能的实现方式是(注意:我没有检查它是否泄漏):

final Handler h = new Handler();
h.post(new Runnable() {
    @Override
    public void run() {
        updateTime();
        h.postDelayed(this, 1000);
    }
});

如果您不想使用处理程序,也可以使用设置为millisInFuture的{​​{1}} CountDownTimer。但这实际上是一个黑客,我不知道Android实现是否可以正确处理整数溢出。

答案 1 :(得分:0)

因为你不能"循环"在主(UI)线程上,您需要使用另一种机制来更新"你的用户界面经常如此。您可以使用Handler,TimerTask,Thread或其他一些机制来允许您安排将来发生的事情。