实现的功能:计时器。
实现的思路:1)后台Service每隔1秒发送广播通知时间已发生变化;
2)UI层(Activity)通过BroadcastReceiver接收到广播,更新显
示的时间。
关键技术点:Service的应用、BroadcastReceiver的应用
说明:1)Activity与通过startService方法启动的Service之间无法直接进行通信,但是借助BroadcastService可以实现两者之间的通信。
2)实现计时器的方式有很多种,比如通过Thread的sleep等,此处只是演示Service与BroadcastService的组合应用(可以将Service中获取当前时间的操作想象为非常耗时的操作,所以不宜直接在UI层来做)。
3)此处演示的Service与BroadcastService的组合是“单向通信”即:UI层只是被动接收Service发来的广播,而没有主 动发送广播控制后台Service。下一篇文章将会编写一个实例进行演示“双向通信”。
第一步:新建一个工程,命名为DynamicUI,Activity命名为DynamicUIActivity。
修改布局文件main.xml,代码如下:
DynamicUIActivity类代码如下:
第二步:实现自定义BroadcatReceiver类UITimeReceiver,负责接收从后台Service发送过来的广播,获取最新时间数据后更新UI层组件。本类最好作为UI层(Activity)的内部类,此处将其作为外部类实现(通过xml文件配置注册BroadcatReceiver,如果是内部类如何通过xml文件配置目前没找到),有意显示如此做导致代码不够优雅。
UITimeReceiver代码如下:
第三步:实现自定义Service类TimeService,其代码如下:
第四步:修改AndroidManifest.xml文件,代码如下:
第五步:运行程序,效果如下:
