0

我正在寻找在 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:如何在 TextView 中显示更新时钟,但我的问题是:我想要 android 中最简单的数字时钟解决方案 =)我还需要使用 Handler 吗?

4

2 回答 2

3

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

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

如果您不想使用 Handler,也可以使用设置为的CountDownTimer。但这确实是一个 hack,我不知道 Android 实现是否可以正确处理整数溢出。millisInFutureLong.MAX_VALUE

于 2012-11-21T18:05:08.467 回答
0

由于您不能在主 (UI) 线程上“循环”,因此您需要使用另一种机制来经常“更新”您的 UI。您可以使用 Handler、TimerTask、Thread 或其他一些允许您安排未来发生的事情的机制。

于 2012-11-21T18:03:10.533 回答