Android培训之Android开发入门如何对复杂的框架进行扩展(上)

2016-02-26 11:16:27 399浏览

        在之前的文章中,你已经了解了Android开发路线图,接下来显然会问:  “我该如何使用该框架来构建自己的应用呢?”如何对这复杂的框架进行扩展,把它变成优秀的应用呢?


        正如你所想到的,该问题有不同的答案。Android库在组织上支持在不同层次上访问框架。本节所描述的概念已经深入Android的内幕。了解这些概念将有助于提升如何轻松通过Android API进行交互的“本能”。

        20年前,应用多是通过命令行运行,其大部分代码是唯一的程序逻辑。但是,现在应用需要支持非常复杂的交互式用户界面、网络管理和调用处理等。支持逻辑对于所有的应用都是相同的。随着应用环境变得越来越复杂,Android框架处理这些逻辑的方式已经得到相当普遍的应用:骨架应用(skeleton application),或称应用模板(applicationtemplate)。
        当创建简单的演示程序来验证Android SDK的安装是否成功时,即第1章介绍的,就已经创建了一个完整的可运行应用。它可以发送网络请求,显示并处理屏幕输入。虽然没有实际使用它,但它可以处理来电,也能检查地理位置。该应用还不能做任何事情。这就是骨架应用。

        在Android开发框架中,开发人员的任务更多的不是要构建一个完整的程序,而是实现特定行为,然后在正确的扩展点把这些行为插入到骨架应用中。MacApp作为最早的骨架应用框架之一,其箴言就是:  “Don’t call US,we’11 call you.”如果创建Android应用的主要工作是理解如何扩展框架,那么考虑一些通用的最佳实践来实现这些扩展是有意义的。

        重写(override)和回调

        最简单且最容易实现的(程序员在框架中添加新的行为的首选)应该是回调。回调是Androidgg中非常普遍的模式,其基本思想已经在第2章做了详细描述。为了创建一个回调扩展点,类必须给出两个定义。首先,定义Java接口(通常是以Handler、Callback或Li stener结尾的名字)来描述回调行为,但是并不实现该行为。其次,定义setter方法,用一个实现该接口的对象作为其参数。

        假定有个应用需要接收用户的文本输入。文本输入、编辑和显示当然需要一套庞大复杂的用户接IZl类集合。但是,大部分接口应用不需要关心。相反,它只是在布局(1ayout)中添加一个小组件库,例如EditText(1ayout和widget在P167“组装图形界面”一节中描述)。Android框架对小组件进行实例化,在屏幕上显示它,当用户输入时更新其内容等。实际上,它执行了除了程序所实现的功能之外的所有事情:内容文本由应用代码进行处理。这是通过回调实现的。

        多态和组合

        在Android开发中,正如在任何其他面向对象的环境中,多态(polymorphism)和组合(composition)是扩展环境的强大工具。上面给出的例子本身已经证明了多态和组合的价值。我们先暂停一下,重新强化一下概念,重申其作为设计目标的价值。

        TextWatcher的匿名实例作为回调对象传递给addTextChangedListener,它使用组合来实现这种行为。该实例本身并没有实现任何行为。相反,addTextChangedListener委托(delegate)给MyModel的handleTextChange方法,采用的是has—a的实现方式,而不是is—a。这使得代码看起来清晰独立。举个例子,如果对MyModel进行扩展,那么使用另一个源中的文本,新的源也会使用handleTextchange方法。不需要跟踪追查后面匿名类的代码。


 查看更多关于“Android培训资讯”的相关文章>>

标签:

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号