前言

在最近的项目当中,我遇到一个在界面中实现系统数字时钟的需求。一看这个其实挺简单的,开个一个子线程获取当前的系统时间睡眠1分钟发送当前时间,然后利用Handler去修改当前显示的时间,直接撸代码。

第一种:Handler+Thread

// 初始化方法
@Override
public void init() {// 时间变化handler = new Handler() {@Overridepublic void handleMessage(Message msg) {tevtView.setText((String) msg.obj);}};Threads thread = new Threads();thread.start();
}class Threads extends Thread {@Overridepublic void run() {try {while (true) {@SuppressLint("SimpleDateFormat") SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");String str = sdf.format(new Date());handler.sendMessage(handler.obtainMessage(100, str));Thread.sleep(10000);}} catch (InterruptedException e) {e.printStackTrace();}}
}

这样能正常实现功能,但是new Thread就是一个定时炸弹,在我的项目炸了。由于我很多页面都有用到这个时钟功能,内存泄漏了。

第二种:使用广播来实现

// 初始化方法
@Override
public void init() {// 新时间@SuppressLint("SimpleDateFormat") SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");tevtView.setText(sdf.format(new Date()));// 更新时间的广播IntentFilter filter=new IntentFilter();filter.addAction(Intent.ACTION_TIME_TICK);registerReceiver(receiver,filter);
}private final BroadcastReceiver receiver = new BroadcastReceiver() {@Overridepublic void onReceive(Context context, Intent intent) {String action = intent.getAction();assert action != null;if (action.equals(Intent.ACTION_TIME_TICK)) {@SuppressLint("SimpleDateFormat") SimpleDateFormat sdf = new SimpleDateFormat("HH:mm");tevtView.setText(sdf.format(new Date()));}}
};@Override
protected void onDestroy() {super.onDestroy();// 注销广播unregisterReceiver(receiver);
}

总结

推荐使用第二种方法来实现时钟功能,性能方面第二种会比第一种好,使用第二种方法之后界面的流畅程度有了明显的提高。希望对Android开发的小伙伴有帮助,为自己打个小广告哈!下面是我的公众号的图片,我会经常更新一下技术干货或者开发踩坑历程,欢迎大家关注我!

Android开发——实现数字时钟相关推荐

  1. android launcher桌面数字时钟及appwidget更新问题

    代码下载http://download.csdn.net/detail/ldinvicible/5010177 一.桌面数字时钟控件效果图 二. 1.准备好一个Widget的显示布局文件 layout ...

  2. 我的Android进阶之旅------Android Widget 桌面数字时钟(DigtalClockWidget)实例

    step1:新建项目DigtalClockWidget,并将显示时间的图片导入到drawable文件夹目录下:                                             ...

  3. android开发时钟xml,android模拟时钟和数字时钟的例子

    android.widget.AnalogClock和android.widget.DigitalClock类提供了显示模拟和数字时钟的功能. Android模拟和数字时钟用于在Android应用程序 ...

  4. Android模拟时钟和数字时钟示例

    在Android中, AnalogClock是两只手的时钟,一个代表小时,另一个代表分钟. DigitalClock看起来就像您手中的普通数字手表,以数字格式显示小时,分钟和秒. AnalogCloc ...

  5. 开发数字时钟桌面小控件

    随时随地技术实战干货,获取项目源码.学习资料,请关注源代码社区公众号(ydmsq666) 所谓桌面小控件,就是指能直接显示在Android系统桌面的小程序,比如模拟时钟等.桌面小控件是通过Broadc ...

  6. quartus 修改 时钟_Clock Quartus II 开发的多功能数字时钟,有计时、调 闹铃、警报等 Other systems 其他 274万源代码下载- www.pudn.com...

    文件名称: Clock下载  收藏√  [ 5  4  3  2  1 ] 开发工具: Others 文件大小: 530 KB 上传时间: 2017-04-20 下载次数: 0 提 供 者: 墨离非 ...

  7. java数字时钟代码,Android自定义数字时钟代码,android自定义时钟,package jp.t

    Android自定义数字时钟代码,android自定义时钟,package jp.tpackage jp.tsmsogn.digitalclock;import java.util.Calendar; ...

  8. Android 开发第七弹:简易时钟(秒表)

    本文承接,Android 开发第五弹:简易时钟(闹钟) 和 Android 开发第六弹:简易时钟(计时器),这一部分是关于秒表的. 布局 同样是新建一个类(StopWatchView)并扩展自Line ...

  9. Android开发 之《最强大脑》“数字华容道”

    文章目录 0 背景 0.1 游戏介绍 1 结构 2 定义棋盘和棋子 1.0 棋子 2.1 棋盘属性 2.2 排列棋子 3 生成棋局 4 游戏过程 5 高分榜 6 作弊&后记 0 背景 最近看& ...

最新文章

  1. 【细品架构12/100】架构漫谈系列脑图
  2. 奚记--最简洁的记账软件
  3. 一个将当前目录下HEX文件的第一行数据删除的程序...
  4. 英语发音表及读法_如何一个人练习英语口语?
  5. 三维重建8:点云图像的滤波方法
  6. 关注电子商务网站中的消费信赖和消费安全感
  7. opencv 实现图像形态学操作 膨胀和腐蚀 开闭运算 形态学梯度 顶帽和黑帽
  8. as ssd中文版测试软件,AS SSD Benchmark
  9. 兆,字节,位等单位转换
  10. MySQL Join 优化
  11. 论文中的结果分析怎么写?
  12. Expert 诊断优化系列------------------内存不够用么?
  13. 团队管理之—— 技术债务:如何带领团队从困境中突围而出?
  14. 鬼泣4refrain 《鬼泣4 refrain》图文全攻略(iphone版)
  15. 浅析在线教育行业发展所面临的困境
  16. 2022.05 ESP32 空中升级 OTA
  17. 2015年电子设计竞赛—增益可控射频放大器
  18. Arduino使用TM1650四位数码管模块
  19. Python入门:制作世界人口地图
  20. 编码之路,与君共勉!

热门文章

  1. oracle通过DBlink连接神通数据库方法教程
  2. 魅族16无信号服务器,魅族16信号差的解决办法
  3. Remove WebCakeDesktop
  4. HTML怎么跟随页面缩放,如何让网页跟着 浏览器全比例缩小(示例代码)
  5. 想做电商没产品?四个选品方向,让你进入电商行业
  6. 利用Shell 脚本导出sql表格并邮寄发送
  7. 在Activity中获取另一个XML文件的控件
  8. 谈谈电子设计中PCB上的ESD防护方法
  9. set, setenv, export的区别
  10. PCL5打印机命令语言功能参考