美文网首页
210615.《Learning Android中文版》学习笔记

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

作者: 风往北吹_风往北吹 | 来源:发表于2021-06-16 23:31 被阅读0次

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

    Yamba 项目简介

    学习的最好方法就是动手实践,因此一个好的实例是很重要的。经过总结,一个好的实例该有如下特征:

    • 全面:一个好的实例应该足以涵盖Android应用框架中的诸多特性,同时也把相应的特性用在点子上,而不仅仅是为了展示特性而使用特性。
    • 大众化:一个好的实例应当是简单易懂的。对我们来说,学习的重点在于理解它的设计与实现,而非死记硬背它的特性与好处。

    Yamaba项目

    我为这本书选择了一个类Twitter的应用程序作为实例,它的名字是Yamba,即 Yet Another Micro Blogging App。 使用Yamba,你可以连接到twitter之类的微博服务以跟踪朋友的消息,也可以更新自己的消息。

    Yamba作为一个实例,它应用了Android的所有构件(Building Blocks),全面而不失简洁。我们可以留意下它是如何将各个独立工作的部分合而为一的。至于Twitter这样的微博服务大家肯定不会陌生,因此有关程序的功能也就不多做解释了。

    成品图大约如下:


    来自友邻的消息列表,也就是Timeline 用户输入消息时屏幕的样子 用户选项

    设计原则

    我们需要引入一个设计原则,作为指导项目行进的指南针,并贯彻于项目的始终。在遇到问题时,它也可以给予我们一定的帮助。

    • 渐进式开发:先从一个小程序做起,随后慢慢给它添加功能。一开始程序的结构会很简单,但是我们会在更新中不断为它添血加肉,让它慢慢成长。行进途中我会及时讲解这些变化,读者可以留意。

    • 保持完整,保持可用:程序必须保证一直都是可用的。或者说,在每次修改中所添加的功能应尽量的小并且完备。一旦将其加入原先的代码库,就依然是一个整体,并保证在每一轮更新之后,程序都是可以正常运行的。

    • 代码重构:每过一段时间就回头重构下我们的程序,及时消除重复代码,优化设计,增加代码重用,避免重复造轮子。 但也没有必要纠结于一次性解决所有的问题,毕竟还有未来的重构。在这一流程中,读者也可以体会下软件开发过程中的最佳实践。

    项目设计

    第4章中有提及,Android应用就是Activity、Service、Content Provider、Broadcast Receiver的松散组合。它们作为Android的基本构件(main Building Blocks),在开发中扮演着不可或缺的角色。 下图Yamba设计图 给出了Yamba的设计架构,不妨留意其中基本构件与应用之间的关系。

    Yamba设计图

    第一部分: Android 用户界面

    在这部分中,我们将着重介绍 Yamba 的第一个部分:消息更新界面。 我们的主要任务有:

    构建一个Activity

    我们先来熟悉一下 Android 的用户界面(UI)模型。Android的UI模型可能与你接触过的其它UI模型有所不同,其最大特点即它的 UI既可以通过Java描述,也可以通过XML描述。

    在这一章中,我们将尝试开发一个如 上图"用户输入消息时屏幕的样子" 那样允许用户发布消息的界面。在此过程中,我们配合使用Java与XML完成UI 的设计。在此,读者将了解到Android中Layout与View的概念,以及图片的使用方法与美化UI的窍门。

    在此,我们将贯彻 UI 设计的最佳实践,使你的应用程序能够适应任何尺寸和分辨率,而不失美观和实用。

    网格和多线程

    有了用户界面,接下来就应该考虑用户与服务端交互的实现方法了。在此,我们引入一个三方库来帮助我们访问 Twitter 的 API 服务。

    在网络调用执行中,我们会发现界面响应不灵,这是因为网络操作是不可预知的。毕竟不能让网络操作把我们的界面卡死,因此我们在这里引入Android中的多线程机制,避免不必要的外部阻塞。

    Android程序的调试

    哦,糟糕,我们的程序不能正常工作了。不过别担心,这是必须的。调试是正式开发中不可回避的一部分。我们将在本章讲解 Android SDK中提供的调试工具的使用方法,学会如何快速地定位并解决问题。调试会成为你的第二本能的!

    5.5 第二部分: 首选项,文件系统,选项菜单以及Intent

    这部分讨论用户个人选项界面的实现。 在本节结束后,Yamba 将会拥有两个用户界面,一个用来更新消息,另一个用于配置个人选项。 此时的Yamba已经可以为用户所配置,成为一个可用的 App 了。本阶段我们要新建的东西有:

    选项界面

    首先我们需要一个界面。每个界面都对应着一个Activity,它是 Android 的基本构件之一。 我们将在这里学习新建界面的步骤和方法。

    菜单系统与 Intent

    我们还需要一个地方来切换界面,因此在这里引入 Android 的菜单系统及 Intent 机制,学习通过发送 Intent 实现切换界面的方法。

    文件系统

    最后我们将学习典型 Android 设备上的文件系统。阅读本章之后,你将对操作系统的架构以及Android的安全机制有更深一层的理解。

    第三部分: Android Service

    这部分对应第八章,介绍Service(后台服务)的相关知识。到本章结束,Yamba将能够定期访问服务端,即时更新朋友的消息。

    Service

    Android 的 Service 是个很重要的构件。它允许进程在后台运行,而无需用户界面。 这对 Yamba 自然是再合适不过,我们可以凭借它实现定期与服务端交互。在本节,你将学到Service中多线程的使用方法。

    Application对象

    到这里,我们会发现代码中多了些重复的东西,而不那么优雅了。为了重构 Yamba 使之更易于扩展,我们在此引入 Application 对象。

    5.7 第四部分: 使用数据库

    现在我们已经可以从服务端获取数据了,但还没有地方用来存储数据。在此,我们介绍 Android 的数据库支持。在本节的最后,我们即可实现将数据持久化保存在数据库中。

    SQLite以及Android的数据库支持

    Android自带了 SQLite 数据库的支持。SQLite短小精悍,更有Android框架中丰富的API,使用起来会很容易。本节我们介绍SQLite及其配套API的使用方法。哦,在这里还没必要精通SQL,不过了解一些SQL总是好的。

    再次重构代码

    到这里不妨再重构一下代码。不必吝惜重构的机会,它是长线投资,甜头只有在后面才尝的出来。

    5.8 第五部分: List与Adapter

    听名字像是回头复习UI了,但List与Adapter与众不同。作为控件,它们允许我们将大量的数据集与小屏幕上的显示绑定在一起,且不失高效性与伸缩性。从用户的角度来看,得到的好处就是Yamba不会因为运行时间的增长而变慢。

    数据都已保存在了数据库中,但还没有办法显示出来。在此我们为 Yamba 设计一个显示Timeline的界面,方便用户查看朋友消息。

    Timeline 界面

    接下来分步实现第三个也是最后一个界面。首先利用已知的Android UI知识组装出一个半成品,能基本工作就好;然后改进设计,它会看起来更漂亮些,但是依然不能满足现实世界的需求;最后我们引入List与Adapter,使之完善可用。

    再重构一次?

    我们希望用户能够在不同的界面中感受到一致的体验,也希望我们自己管理代码能够更容易些——再重构一次吧。在此我们引入一个BaseActivity作为所有Activity的基类,将重用的代码提取出来。

    相关文章

      网友评论

          本文标题:210615.《Learning Android中文版》学习笔记

          本文链接:https://www.haomeiwen.com/subject/fbktyltx.html