第五章 实训项目整体设计

最好的学习方式是通过实例学习,这必须满足一定标准的例子。通过和数以千计的开发者合作以及通过使用各种实例应用程序来解释一些这些平台的独特的概念,我得出的最好的例子是:

专业综合实例

一个很好的实例应用程序应该展示大多数方面独特的Android应用程序架构,此外,应该有一个好的理由使用特定的功能以完成工作。为Android那些新的东西创建正确的动机是很重要的。

熟悉

应用程序实例应该很容易理解,我们更专注于设计和实现,而不是功能和好处。

实训应用程序

这本书中我选择的应一个用程序是一个类似于Twitter的应用程序,我们称它为实训,它代表了另一个微型博客应用程序。让用户连接到一个服务如Twitter,拉下朋友们的状态并更新用户自己的状态。以自然的方式覆盖了大部分主要 Android架构。这样,是伟大的实例应用程序来说明各种成分如何单独工作以及他们如何配合在一起。比如,Twitter的服务或多或少都熟悉,所以应用程序的功能不需要太多的解释。

图5-1到5-3显示了一个成品的效果

其他人的状态信息列表称为时间线

用户可以输入状态信息的屏障

用户偏好

图5-1显示了如何从你的朋友那里陈列一系列的状态信息,图5-2显示了初始屏幕,图5-3显示了用户的偏好。

设计理念

我们将在解决这个项目上采取一定的设计理念,这种理念将有助于在发展中引导我们,当在怀疑下一步要做什么时作为一个北极星来引导我们。

拼写出这里的设计理念将在接下来的过程中帮助我们消除困惑:

小增量

在实训的应用程序中将开始小和不断增长的功能和复杂度,最初,应用程序不会做太多,但它将一步一步的增长,一路上我们会解释每一步骤,让你在自己走的过程中不断拓展自己的技能,

总是保持完整

应用程序必须一直运行,换句话说,我们将要小的、自成体系的块中添加新的功能,然后把它们拉到主项目中,这样你就可以看到他是如何适应整体的,应用程序必须始终在每个停止点工作,

重构码

偶尔我们会后退一步,删除重复的代码重构和优化设计中的应用。目标是重用代码,而不是重新发明轮子。但我们越过这些在我们得到他们的时候, 这为重构提供了前进的动力,这个过程会教你一些通用软件开发的最佳实践。

项目设计

第四章中提到,安卓应用程序是一个松散的活动集合,服务,内容提供商和广播接收器,这是我们提出的组件的应用程序,图5-4显示了整个扬巴的设计应用,其中包括最主要的Android积木。

第一部分:安卓用户界面

这一部分,第六章有所 涵盖,将重点开发的应用第一部分:扬巴状态更新屏幕。我们的任务是建立一个活动,网络和多线程,并进行调试。

图5——4

构建活动

我们将通过引入安卓用户界面(UL)模型,在用户界面中,安卓与你熟悉的其它一些范例有很大不同,独特的功能是它的双重方法,通过这两个java和 XML(可标记语言)。

在这个章节,你将要学习怎样开发用户界面,像图5——2展示的那样,用户在哪里更新他的状态,通过这个过程,你将要使用java和 XML来共同使用一个工作空间,你将会了解布局和视图,安卓中的装置,如何与图像工作,如何使用户界面看起来更漂亮。

我们的目标将集中在用户界面开发的练习方面, 所以你的应用程序在任何的安卓设备,任何的屏幕大小和分辨率都看起来不错,运行速度快。

网络和多线程

我们一旦拥有一个工作屏幕,我们将要发布用户输入到云服务,为了这个目的,我们将要使用第三方图书馆来帮助我们的微博网络服务调用,在进行网络呼叫时,你会注意到UL开始时变得缓慢,这是由于网络的不可预测性。网络延迟可能导致我们的应用程序停止响应,在这一点上,我们将介绍安卓多线程,并解释如何开发一个应用程序,无论外界环境如何工作。

调试应用程序

在这本书的这一节里,很少有内容会出错,这是因为设计,因为调试是应用程序开发的一个重要部分,我们将向你展示如何使用Android SDK工具来迅速的找到和解决问题,调试将成为你的第二天性。

第二部分,偏好,文件系统,选择菜单,意图

这一部分,在第七章有所提及,是关于所有喜好屏幕,在这部分的结尾,你的扬巴应用程序将要有两个屏幕,一个用于状态更新,另一个用于设置首选项。扬巴对不同用户来说是可配置的,开始成为一个有用的应用程序。我们在这个阶段将要 创造的元素是活动,菜单系统,意图和文件系统。

活动

首先,我们将要创建一个屏幕,这是一个活动,一个安卓的基本构建块,你会看到所涉及的步骤,并了解它需要创建的新屏幕。

菜单系统和意图

下一步,我们需要一种方法来进入屏幕,为了这个目的,我们将介绍安卓中的一个菜单系统,并展示它是如何工作的,你还将了解意图以及如何发送这些意图来开发一个具体的活动。

文件系统

最后,我们将要了解一个典型安卓设备上的文件系统,你将深入了解如何把操作系统放在一起,你也将会了解更多关于安卓安全的知识。

第三部分,安卓服务

这一部分,第八章有所涉及,介绍了后台服务,你的扬巴应用将定期连接到云,下拉你的朋友状态使其更新。

服务

安卓服务是非常有用的积木,它们允许一个进程在后台运行,而不需要任何用户界面,这对扬巴来说是完美的,我们将会有一个更新过程连接到云。在本节中,你还将会了解多线程的注意事项,因为他们适用于后台服务。

应用对象

在这一点上,我们会注意到代码中的重复,并承认我们的系统不会像之前那样简洁了。所以我们将要介绍的对象作为一个方法来重构扬巴,然后使他便于规模。

第四部分,与数据库的合作

我们现在有我们的数据更新服务,但仍然需要一个地方来存储它。这一部分,第九章有所涉及,我们将向你介绍安卓对数据库的支持,在这章的结尾,我们的数据将持续在云数据库中存储。

SQLite和Android的支持

Anroid有一个内置的数据库SQLite.除了这个很酷的小数据库,Android框架提供了丰富的API。使得我们更容易使用SQLite。在这一部分中你将要了解SQLite的API.你不必是SQL的一个爱好者来学习SQL的一些基本的知识,但总是有用的。

重构代码

在这一点上,我们有另一个机会来重构和简化我们的代码。在这一刻将有一个重构动机,并在以后的章节中获得更大的奖励。

第五部分,列表和适配器

它可能听起来我们在用户界面模式,但相比安卓中的用户界面元素,列表和适配器更多的是组性型的助手。他们形成非常强大的组件,允许我们的

小用户界面以高效和可扩展的方式连接到非常强大的数据集。换句话说,用户将在现实世界长期使用扬巴而没有任何性能影响,目前的数据是数据库中的所有数据,我们无法查看它。 这一部分,第十章有所涉及,扬巴应用程序将要得到急需的时间线活动,让用户来观察她的朋友们是否在线聊天的一种方式。

时间线活动

我们将在多个阶段中发展这第三个和最后的活动,首先我们将要使用我们现有的安卓用户界面方面的知识。它将工作,排序,下一步,我们会改进设计应用程序将看来更好,但它仍不能在黄金时间准备好因为我们的设计无法处理真实世界的使用。最后,我们将通过引入列表和适配器的组合来获得它的权利,最后,我们将通过混和使用列表和适配器来获得它,并使用他们将数据和我们的用户界面联系在一起。

更多重构?

我们将要有另一个机会为我们正常获得的活动介绍一个基本的活动来重构我们的代码。这将让用户对APP有种更加坚持的感觉通过多屏,同时在代码前进的过程中处理起来更加简单。

第六部分,广播接收器

这一部分,十一章有涉及,我们将通过接收器装备扬巴,所以能以一个智能的方式对它周围的事做出反应,为了实现这目的,将要用到广播接收器。

引导和广播接收器

举个例子,当设备处于供电状态时进行更新。我们也希望在网络不可用时停止将数据从云中拔下,只有在重新联机时,重新启动它。这个目标将带领我们进入一种广播接收器。

时间线接收器

这种接收器在某些时间存在,同样地,它不会从安卓系统接收信息,而是从扬巴的部分应用程序接收信息。这将演示如何以灵活和优雅的方式将组件组合起来,

权限

在开发的过程中你要知道如何向系统申请权限,例如进入网页和文件系统,在这一部分我们将要知道如何定义自己的权限,以及如何控制它们。可能扬巴组件不想因为一些扬巴具体的活动而对任何的应用程序作出反应。

第七部分,内容提供商

这一部分,第十二章有涉及,我们将重温内容提供商和重构数据代码的使用,为了证明这一切我们将投入一个安卓应用程序部件。

数据状态

在没有人干涉的情况下,我们的数据状态将保持良好。但是如果我们将这些数据暴露于系统的其他部分,那将又是什么?毕竟其他应用程序可能以新的和创造性的方式来改变我们朋友的时间线,为了这一目的,我们将构建一个内容提供商并展现数据状态。

安卓工具

但谁会记得改进我们的应用程序?为了展示我们数据状态的使用性,我们将应用程序工具组合起来,应用程序小部件是用户可以在主屏幕上放置的小部件,例如天气的更新等。我们将创建一个窗口,将最新的状态更新从扬巴数据库同过内容提供商显示在主屏幕上。

第八部分,系统服务

安卓系统服务有许多有用的系统服务。这包括过程中你可以访问一些东西,诸如你的位置,传感器的读数,WiFi热点,以及更多。你会向扬巴提供一些新的很酷的功能,如用户的当前位置。

指针和位置

这个例子将说明系统服务如何在一般情况下工作,并且您将了解使用这些服务的一些常规模式。我们将说明如何构建指针APP以及如何使用传感器,我们将把这些知识运用于实践,通过让扬巴显示在用户的位置更新。

意识服务,警告和通知

事实证明,一些由安卓服务提供的功能,可以使我们的更新服务更简单。所以我们再一次重构我们的代码。这次我们将介绍意识服务响应的意图,我们需要一些东西不断地向定期基础上的意图开枪,然后使用报警服务。我们还将添加一个功能,在通知栏中放置一个通知,通知用户新的更新。为此我们将使用通知服务,由于更新服务的需要,我们创建一个更优雅的方案。

总结

本章的目的是为下八章提供一个路线图。在这些迭代的末尾,你将从零开始建立一个中等规模的应用程序。更重要的是,你会明白各种各样的结构,以及如何把它们合为一个有意义的整体。希望你将开始开发一种在安卓系统的思维方式。