210727.《Learning Android中文版》学习笔记

2021-07-27  本文已影响0人  风往北吹_风往北吹

《Learning Android中文版》学习笔记05

5.9 第六部分: Broadcast Receiver

我们想让Yamba智能地响应外部事件。为此,在这里引入Broadcast Receiver机制。

Boot Reciever 与 Network Reciever

假如我们希望在设备开机时就开始更新消息,也希望在网络离线时暂停更新,并在网络正常时恢复更新。要实现上述功能,就需要通过不同的Broadcast Receiver来完成。

Timeline Reciever

还有另一种Receiver,它们只存在于特定的时间段,收听的消息也不是来自Android系统,而是来自Yamba自身的其它部分。我们将在这里了解到,如何使用Reciever将松散耦合的各部分优雅地组合起来,而不失可扩展性。

权限

在访问网络或者文件系统时,你已经对系统内置的权限机制有所了解。在这里,我们将尝试定义我们自己的权限机制,并应用它们。毕竟我们不希望他人来随便访问Yamba的内部操作。

5.10. 第七部分: Content Provider

在这里,我们将再访Content Providers,重构数据库的代码来使用它们。为展示它们的工作方式,我们将引入一个Android小部件。

消息数据

其它程序不能干涉我们的消息数据,这样很好。但我们想让其它程序访问这些数据又该怎么办?毕竟其它程序也可能想善意地利用我们的数据,通过它们独特的表现手法做另一番展示。为此,我们需要创建一个Content Provider为外部提供数据。

应用程序小部件

但是谁会关心我们的数据呢?当然有,比如小部件(App Widget),也就是挂在主屏幕上显示天气之类的小东西。我们将在这里新建一个小部件,通过Content Provider读取最新消息并显示在主屏幕上。

5.11 第八部分: 系统服务

(译者注:"系统服务"与作为构件的"Android Service"是不同的东西。在翻译中,我们将所有构件的名字保留原文,而将System Service译为"系统服务",以示区别。)
Android 操作系统内置了许多实用的系统服务供程序使用,比如当前位置、传感器数据、WiFi热点等等。在这部分,我们将为Yamba添加若干小功能,比如提交用户的当前位置。

Compass与Location

本例用以演示系统服务的工作方式。我们将利用传感器的有关特性,开发一个指南针应用,随后将类似的功能引入Yamba,为用户发送的消息附带上坐标信息。

Intent Service, Alarms, Notifications

可以看到,Android内置了一些很酷的Service,用好可以简化UpdaterService的实现。所以再次重构代码吧。在这里我们引入IntentService来响应Intent请求,另外还需要引入Alarm Service,来定期触发Intent请求。我们还将使用到Notification Service,在系统托盘(Notification Area)显示提示信息。经过重构,我们将得到一个更为优雅的UpdaterService实现。

5.12 总结

本章可作为后面八章的铺垫。经过一轮轮的迭代,你将完成一个中等规模的Android应用。更重要的是,你可以在这过程中体会到程序各部分的意义、及其合而为一的方法。或者说,这就是体会到Android开发中的“思维方式”。

上一篇下一篇

猜你喜欢

热点阅读