Android 实时时间显示实现
闲来无事做了个小软件,需要实时显示时间。一想用多线程实现吧,后来仔细一想在安卓中用多线程来刷新时间不是很好。于是就用了另一种方式来实现。效果也很不错。第一次写博客,写的不好。仅供记录自己的学习历程。
- 用广播来实现时间的实时更新
主要代码
private BroadcastReceiver mTimeRefreshReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
if (Intent.ACTION_TIME_TICK.equals(intent.getAction())) {
setTime(getSystemTime());
}
}
};
ACTION_TIME_TICK 系统每分钟会发一次广播。我们接收到便可以更新时间了。
@Override
public void onCreate() {
registerReceiver(mTimeRefreshReceiver, new IntentFilter(Intent.ACTION_TIME_TICK));
}
在onCreate中注册广播
@Override
public void onDestroy() {
unregisterReceiver(mTimeRefreshReceiver);
}
同样,在onDestory中取消注册。
private CharSequence getSystemTime() {
java.text.DateFormat dateFormat = DateFormat.getTimeFormat(mActivity);
long sysTime = System.currentTimeMillis();
return dateFormat.format(sysTime);
}
根据手机系统的时间格式格式化并获取时间
另外说一下 ACTION_TIME_CHANGED
这个是在用户手动修改了时间的设置是系统发送的广播。如有需要也可以加上去。
欢迎大家来一起学习交流。