我正在寻找在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吗?
答案 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或其他一些机制来允许您安排将来发生的事情。