零、前言
本文旨在帮助有基础的同学快速扫盲,如果你和我一样,学习过其他语言,又恰巧第一次接触Android开发,本文会比较适合你。
如何学习一门新的语言?
对于有一定语言功底和开发经验的人来说
我们在学习一门新语言时不可能再从变量、函数学起,
而应该站在更高的角度,思考如何把已有的编程思想和设计模式迁移到新接触的语言中,
将未知的问题转化为若干个熟悉问题的组合,用已有的知识解决新的问题,谓之“化归”。
所以既然有基础了,学习新语言应就应从使用最频繁的功能入手。大致包括:
- 环境安装
- 新建和打开项目
- 宏观结构(前后端)
- 微观结构(MVC)
- 数据绑定与操作反馈
- 组件间调用
- 生命周期
- 连接数据库或读写文件存储(仅后端语言需要)
- HTTP请求
- 单表增删改查
- 复杂的多表增删改查
- 登录注销拦截器过滤器
时间仓促,本文只写一部分,后面慢慢补齐:
一、环境安装
Android开发环境 = JDK+AndroidSDK + AndroidStudio
JDK
就是我们平时使用的JDK,用平时的安装方法安装,没有什么特别之处,直接使用JDK11即可。
// 查看JAVA版本,如有返回值,说明环境变量生效
java -version
AndroidSDK
此SDK内置在AndroidStudio中,不用单独安装。
AndroidStudio
官网下载:https://developer.android.goo...
此IDE包含在Jetbrains全家桶中,也可以在Jetbrains Toolbox
中下载:
注:如果第一次编译出现 Failed to install the following Android SDK packages as some licences have not been accepted. 可以参考 https://segmentfault.com/a/11...。
环境安装完成后需要尽快熟悉IDE的操作,更重要的是如何切换项目的SDK版本。
二、宏观结构
这个词是什么意思?没意思,这个词是我自己造的。
细数我们学过的语言,可以大致分为以下几类(也许总结的不太准确):
单体结构,包括C/C++、C#、原生JAVA、原生Python等。
它们之中,有些是控制台程序(黑框框),有些是GUI程序(有界面)。
这一类应用的特点是:直接运行在本机的操作系统上,靠用户输入完成交互,客户端即包含全部功能,几乎不使用网络传输,靠本地文件来储存运行时的数据。
前后端不分离Web结构,包括PHP(thinkPHP)、使用网络的JAVA(SpringNoot)、使用网络的的Python(Flask、Django)
特点是:
程序功能的实际提供者运行在服务器上,软件功能由服务端提供,渲染和业务逻辑全部由服务器完成,服务器返回的是整个HTML页面。
用户仅使用浏览器浏览静态页面,并完成交互操作。
必须依赖网络,数据在服务器的数据库中。
Client / Server 结构以及前后端分离web结构,前端包括vue、angular、作为客户端的C#等,后端包括REST模式下的Springboot、PHP等。
特点是:
程序后端运行在服务器上,前端运行在用户的操作系统(或浏览器)上,
此时服务器只用来实现REST功能的API,处理业务逻辑,
而页面渲染、发起请求则由前端处理。
Web可以说是C/S模型的一个分支。除了web外,大型网络游戏也是典型的前后端分离(cs)应用。
对于安卓开发来说,有以下两种情况:
单机安卓软件
比如系统设置、系统相机、视频播放器、各种小工具之类。
这些不需要联网的软件,可以看作单体结构(第一种),整个程序都在手机上运行,由Java的服务层实现业务逻辑。
安卓客户端软件
例如电商软件、手游、通讯工具等等,都是客户端软件,可以看作Client/Server模型。
目前绝大多数安卓软件都是C/S的客户端,几乎没有单机应用。
综上,我们可以直接认为,安卓开发是前端开发!
微观结构
这个词也是我自己造的,其实说的就是设计模式。
最常见的包括MVC、MVVM等模式。
安卓开发的贯彻落实了MVC的思想,所以很好理解软件的层次。
先来看一个最简单的文件结构
活动(Activity)
Android中有一种叫做活动(Activity)的Java类,它本质上是Java代码,并且继承了Android内置的Activity类,所以就有了扩展功能。
它充当了C层(控制器)的角色,用来创建页面、响应操作,传递数据等等。
布局(Layout)
Layout本来是布局的意思,在Android中指的是类似HTML功能的页面模板,使用xml文件,其实xml和HTML本质思想一致,用法也差不多,xml中的熟悉和CSS相似。所以layout充当V层的角色。
layout既能文本化编辑,也能可视化编辑。
原生Java类
活动只用来传值和调用,真正进行逻辑处理、发起HTTP请求的应该是M层,它使用的是许多原生Java代码,它实现了Model模型、Entity实体、Service服务等等功能。
所以可以理解成,安卓在抛开活动和布局后,其他方面和原生Java的相似度很高。至于安卓特有功能,却和前端开发非常相似。
静态字符串资源(values)
安卓的字符串都放在values文件夹,使用xml储存,本质上就是键值对(keymap)
键值对可以通过一个固定变量名来操作固定的字符串,保证项目全局引用的值是相同的,当值变化后,整个项目中都会同步变化。
Android全局配置文件(AndroidManifest.xml)
这个文件管理着活动,所有的活动都必须在此文件中注册后才能被创建。
文件中也必须指定启动时执行哪个活动,程序才能正常运行。
每增加一个活动,AndroidStudio就会自动在此文件中增加标签。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。