前言
在学 Android 之前,我倒腾过 VB、J2EE、SWT、C#、HTML、CSS、JavaScript、Symbian。
Android 学会后,又折腾过 PHP,用过不少 PHP 的框架及开源源码,来我们公司又接触了 Ruby on Rails、Angular、Vue。
这些学习让我顿悟三个观点,今天便趁着这个交流学习的机会,与君分享讨论之:
所有开发语言的基础语法本质都是一样的,只要能顿悟到这个本质,学习新技能可以节省不少的学习时间;
所有的开发框架的架构思维目的只有一个,把代码分散到不同的文件里,并对其文件分门别类的摆放,方便后期的维护和扩展;
只要这个开发技术有着强大的开发团队在维护,它就会不断的吸取目前市面上优秀的技术架构思维,摒弃旧有的自身糟粕。
综上,学习每门开发技术时,我们不要痴迷于学习其语言语法或规范,而应想透其采用的技术思维是什么、怎么采用这个技术思维、为什么采用技术思维。也就是所谓的 what、how、why。
接下来我给大家讲 Android 不是只讲 what,还会横向对比其他技术里面类似的东西,讲讲我理解的 how 跟 why。
我个人非技术痴迷者,只是把它们当做实现产品的工具。
再加上自身因素使学习时间有限,每门技术我仅会点皮毛。
理解上肯定有疏漏或不对的地方,如讲解有错,还望大家指正。
Android 版本
- 2.x:有着诸多的美好,也有着诸多的不美好,那时候文件管理器、任务管理器软件非常吃香
- 3.x:任务管理的改进
- 4.x:界面的改进,Material Design 的初探
- 5.x:Material Design 的成熟
- 6.x:运行时请求权限,个人认为是打算吸收 iOS 的做法吧
了解五大组件
首先,我们需要初步的了解下在 Android 开发中常用的几个组件是干什么的。
Activity
Activity 就是我们见到的界面,与它相关联使用组件有:
- 谈谈 View 学习使用心得:其思想与桌面开发的 View 思想是一致的,监听者模式
- xml:布局 xml、style 与 html、css 的异同
切换到项目代码演示:
- 先看看简单的 Activity 代码:SetRoadshowRemarkActivity
- Activity 的生命周期
- Fragment 使用
- Logger 使用
- Retrofit 使用
- Fresco 使用
- MVP 模式:chat 跟 roadshow 比较,印证我的观点 2
- 真正理解 Java 继承
Service
后台进程:
- 每门技术领域都有进程概念,Android Service 进程概念与其他技术领域的进程是一致的理念
切换到项目代码演示:
- BaiduPush 相关代码
Broadcast Receiver
监听系统事件:
- 我个人觉得是跟了桌面软件的系统概念是一致的
项目中没有用到
Content Provider
应用之间共享数据,项目中没有用到。
Intent
通信:
- 讲下通信的理解,通信的媒介只有:内存 + 文件 + SqlLite
切换到项目代码演示:
- Activity start
- open url by browser
- ShareView
谈谈 Android 的 Gradle
类同于 Rails 的 Gemfile,PHP 的 Composer.json,Bower 的 bower.json。
切换到项目代码演示:
- build.gradle