###怎样学习Android开发

  1. 先结合官网做一个整体的把握(官网具有准确性、系统性)
  2. 通过官网或者相关的教程进行具体学习
  3. 通过实际项目或者高级进阶教程持续迭代

###Android开发的特点

  1. 系统提供了丰富的API给我们
  2. 应用程序由一系列的组件(Components)组成,因此我们就需要掌握各种组件的Callback(即生命周期),组件需要在Manifest中声明,以告知系统。
  3. Intent(隐式/显式)把独立的应用程序组件绑定起来,协同工作,这里需要掌握如何使用Intent去操作组件。
  4. 理解两类API:1、系统级API,应用开发中通用、常见的API。2、插件级API,具有特定功能的APP才会用到,比如Media、Camera、Connectivity等。

###Android系统架构中的设计模式与设计原则思考

####一、关于设计模式和设计原则的介绍:

####二、模板方法设计模式

Android开发中常见的情形是这样子的:

对应的时序图如下:

这其中就隐含了模板方法的设计模式,关于模板方法,请查看:http://www.cnblogs.com/chenpi/p/5217430.html。

模板方法的可调用类型分为:

  1. 具体的操作(ConcreateClass或者对客户端的操作)
  2. 具体的AbstractCalss的操作(通常对子类有用的操作)
  3. Factory Method
  4. 钩子操作(Hook Operations),提供了缺省行为,子类可以再必要的时候进行扩展。一个钩子操作在缺省的时候通常是一个空操作。

例如:

注意:

  1. 必须要子类实现——抽象,可选——钩子,不需要子类实现——final。
  2. 抽象方法越少越好

####三、好莱坞原则

通过这种生命周期回调的模板方法设计模式,体现了好莱坞原则(don't call us , we'll call you):

  1. 底层组件可以让自己挂钩到系统中
  2. 底层组件局对不可以调用高层组件
  3. 高层组件确定什么时候以及怎么去使用底层组件

####四、控制反转

通过这种生命周期回调的模板方法设计模式,也体现了控制反转的原则:

例如,为什么我们开发者不直接去new组件呢?对于Activity来说,本来是我们去使用Activity,结果现在是Android系统去帮我们进行维护与管理,我们只需要实现对应的回调。这样就大大降低了Android开发的难度了。

例如Intent启动组件的过程:

控制反转的知识:http://blog.csdn.net/wu631464569/article/details/52433912

对于文章的最后,依赖注入(DI)只是实现控制反转(IOC)的一种方法,例如我们在操作Service的时候:

Service被绑定之后,注入到Activity中,依赖对象的获得被反转。不是我们自己去new一个Service,而是通过绑定之后才注入到Activity中。

###总结

为什么需要上面的设计模式和原则呢?

  1. 软件最不会改变的地方就是“改变”本身
  2. 我们的设计架构需要适应各种变化,就要求我们的软件需要松耦合、可维护、可测试。才能让自己处于主导地位。

最终,我们就可以开发出松耦合、可维护、可测试的程序。

如果觉得我的文字对你有所帮助的话,欢迎关注我的公众号:

我的群欢迎大家进来探讨各种技术与非技术的话题,有兴趣的朋友们加我私人微信huannan88,我拉你进群交(♂)流(♀)

Android应用开发的一些思考相关推荐

  1. [转]Android敏捷开发指南

    原文地址:http://www.apkbus.com/android-72730-1-1.html 本文紧密结合移动开发方法与技术,围绕Android平台的开发探讨提供更高质量移动产品的解决方案.作者 ...

  2. BATZ,一份《Android架构开发手册》就够,已offer

    前言 今年的面试比往年要难得多,各个互联网企业对于Android岗位的要求越来越多,也越来越高,主要是初级岗位已经趋近饱和,但高级岗位又相对来说缺乏,这类的人才偏少,因此作为Android开发人员,我 ...

  3. Android之开发性能优化简介

    原帖地址:http://www.eoeandroid.com/forum.php?mod=viewthread&tid=327340&extra=page%3D1%26filter%3 ...

  4. 了解android应用开发的更多方面有更好的认识

    在很多的时候我们会想为什么苹果会变的这么火热的呢?仿在Eclipse中安装ADT插件开发Android程序很方便,只需要建立Android的Project,它会自动生成android开发的目录结构,并 ...

  5. Kotlin 风险高、RxJava 已过时,Android 原生开发现状分析!

    当你好不容易学会了某个框架或者工具,觉得它很好用的时候,它或许就要过时了. 英文:The State of Native Android Development 作者:Vasiliy Zukanov, ...

  6. 在Android软件开发教学过程中应当注意的事项总结

    近些年来,为了提升学生就业率和收入水平,某些高校或培训机构将Android软件开发当做一门专业学科.Android学科的主要目标是培养学生快速掌握Android开发基本知识和技能,以便于学生利用掌握的 ...

  7. Android记录5--关于Android云测试的小思考

    Android记录5--关于Android云测试的小思考 2013年8月28日Android记录5 前言 随着实习的时间不断推移,小巫遇到的新鲜事物也越来越多,当初选择Android着实是比较明智的选 ...

  8. 一次搞懂 Android 音频开发

    在接触Android音频开发后,陆陆续续的看了不少的文章,如果说查缺补漏把这些文章梳理清楚,然后逐个整合,那么确实也能完整的推导出音频开发需要掌握的技术.但是对于初学者来说,可能在开发中产生很多障碍以 ...

  9. C# Xamarin For Android移动开发项目实战篇

    一.课程介绍 在前面阿笨的<C# Xamarin移动开发基础进修篇>课程中,大家已经熟悉和了解了Xamarin移动App开发的基础知识和原理.本次分享课<C# Xamarin移动开发 ...

  10. Android手机开发总结——Android核心分析

    导读:对于Android开发者来说,成系列的技术文章对他们的技术成长帮助最大.如下是我们向您强烈推荐的主题为Android开发的第一个系列文章. <Android核心分析>整理如下: 1. ...

最新文章

  1. python 归一化_几种归一化方法(Normalization Method)python实现
  2. 2020暑期实习后台开发字节跳动笔试
  3. linux命令应用之一
  4. JAVA学习篇--JSP实现原理
  5. 建造模式实际应用_建造多少,购买多少:为聊天和消息传递应用程序提供支持...
  6. windows10+MongDb4.0.4下载和安装
  7. hdu1059Dividing
  8. nodejs+express- http 访问本地json数据
  9. jquery easyui
  10. 使用H-lua框架制作魔兽争霸地图(7-物编-物品合成篇)
  11. LCD带字符液晶显示I LOVE YOU
  12. 用简单的图来解释人工神经网络(三)——BP神经网络
  13. A1、A2、A3、A4纸都是多大尺寸
  14. 程序是虚幻的,点心是真实的20050425
  15. 百度搜索引擎结果网址参数_反馈搜索结果用时(rsv_sug4)
  16. 过压过流保护芯片,IC芯片电路图
  17. 断言(assertion)的简介
  18. 面向智能机器人的通讯安全机制研究与改进
  19. 让顶部系统状态栏跟随APP背景色
  20. vue2 + tracking 实现 PC 端的人脸识别

热门文章

  1. Java8 中的真的 Optional 很强大,你用对了吗?
  2. FFmpeg总结(八)windows下用ffmpeg获取视频缩略图
  3. yolov3 指定gpu_干货|手把手教你在NCS2上部署yolov3-tiny检测模型
  4. angular4监听输入框_angular4兄弟组件交互,监听响应
  5. iqc工作职责和工作内容_新媒体实习生是做什么的?新媒体实习生岗位职责工作内容...
  6. Python让繁琐工作自动化——chapter10 日志模块
  7. c语言常用代码-1:
  8. 安卓帧数监测软件_还在用游戏加加看帧数?驴哥教你怎么用微星小飞机的硬件监测功能...
  9. cwm recovery 6.0.2.3下载_造梦西游3星辰辅助下载-造梦西游3星辰修改器下载v3.7.0 免费版...
  10. 力扣题目系列:204. 计数质数