Android自学历程

从6月24日毕业以来,感觉人生有点迷茫。想当初在校的时候感觉好像未来会挺好。然而毕业以后才发现,要走的路,要做的事都好长好多。所以在找工作之余,我想把我这自学了将近一年的Android应用开发好好整理整理。写下我自学的历程,分享给跟我一样学习的人。


1.1 Android是什么

这个想必大家都是知道的,Android单纯从字面意思上解释,叫机器人。但是我这里不是说这个,Android是一个智能手机系统,而且还是一种开源的手机系统。

1.2 Android系统架构

Android是个操作系统,所以它也像其他系统一样有层次结构。Android的层次一共分为四层。分别是应用程序层应用程序框架层系统运行库层Linux内核层。具体可以看下图(图片源自互联网)
Android系统架构

一 应用程序层

既然Android是操作系统,那么它上面肯定有许多应用程序啦。如、SMS短消息程序,日历,地图,浏览器,联系人管理程序等。而且这些程序都是使用java编写的,所以开发人员也可以自由编写用以替换它们。

二 应用程序框架层

应用层是开发人员必须了解的,因为这层提供了应用开发的api框架,该层简化了组件的重用,是的任何开发人员都可以很快地使用和运用这些组件开发功能强大的应用

1) Activity Manager(活动管理器)
    管理应用程序生命周期并提供常用的导航回退功能。
2) Content Providers(内容提供器)
    管理不同应用程序分享数据
3) Resource Manager(资源管理器)
    提供非代码资源的访问,如本地字符串,图形,和布局文件。
4) Notification Manager(通告管理器)

三 系统运行库层

在上图我们可以看见这层分为两个部分。

一)系统库
1)Surface Manager
对显示子系统的管理,并且为多个应用程序提供了2D和3D图层的无缝融合。
2)Media Framework
多媒体库,基于PacketVideo OpenCore;支持多种常用的音频、视频格式录制和回放,编码格式包括MPEG4、MP3、H.264、AAC、ARM。
3)SQLite
小型的关系型数据库。
4)OpenGL|ES
根据OpenGL ES 1.0API标准实现的3D绘图函数库。
5)FreeType
提供点阵字与向量字的描绘与显示。
6)WebKit
一套网页浏览器的软件引擎。
7)SGL
底层的2D图形渲染引擎。
8)SSL
在Andorid上通信过程中实现握手。
9)Libc
系统 C 库 - 一个从BSD继承来的标准C系统函数库 Libc ), 它是专门为基于Embedded linux的设备定制的。

二)Android运行
1)核心库
提供了Android开发必要的java语言api。同时也包含了Android的一些核心API,如android.os、android.net、android.media等等。
2)Dalvik虚拟机
Dalvik是Google公司自己设计用于Android平台的Java虚拟机。Dalvik虚拟机是Google等厂商合作开发的Android移动设备平台的核心组成部分之一。它可以支持已转换为 .dex(即Dalvik Executable)格式的Java应用程序的运行,.dex格式是专为Dalvik设计的一种压缩格式,适合内存和处理器速度有限的系统。Dalvik 经过优化,允许在有限的内存中同时运行多个虚拟机的实例,并且[1] 每一个Dalvik 应用作为一个独立的Linux 进程执行。独立的进程可以防止在虚拟机崩溃的时候所有程序都被关闭。(该段源于网络)

四 Linux内核层

Android 是运行于Linux kernel之上,但并不是GNU/Linux。因为在一般GNU/Linux 里支持的功能,Android 大都没有支持,包括Cairo、X11、Alsa、FFmpeg、GTK、Pango及Glibc等都被移除掉了。Android又以Bionic 取代Glibc、以Skia 取代Cairo、再以opencore取代FFmpeg等等。Android 为了达到商业应用,必须移除被GNU GPL授权证所约束的部份,例如Android将驱动程序移到 Userspace,使得Linux driver 与 Linux kernel彻底分开。Bionic/Libc/Kernel/ 并非标准的Kernel header files。Android 的 Kernel header 是利用工具由 Linux Kernel header 所产生的,这样做是为了保留常数、数据结构与宏。
Android 的 Linux kernel控制包括安全(Security),存储器管理(Memory Management),程序管理(Process Management),网络堆栈(Network Stack),驱动程序模型(Driver Model)等。下载Android源码之前,先要安装其构建工具 Repo来初始化源码。Repo 是 Android 用来辅助Git工作的一个工具。(该段源于网络)


上面这些看似啰嗦的介绍,其实还是很重要的,这些在后期我们进阶学习Android开发都是很有用处的。不然我们开发就像吃过猪肉却没见过猪跑了。上面我介绍的估计也不是很全面,因为我现在也是处于学习进阶阶段。如果以后我有更加生成的了解,我也会写出来的。


当然了解完上面这些,我们就可以开始我们的Android开发之路了。

学习Android开发我们需要了解四大组件,恩,很多教程都是这么说的。
(ps:还有个前提就是必须了解JAVA语言)就如他们所说的这四大组件分别是ActivityServiceBroadcastReceiverContent Provider这四个。其实我觉得还要加一个Intent

2.1 Android组件

2.1.1 Activity

活动,Android程序的根本组件,所有程序的流程都运行在活动之中,也是开发时使用最频繁的组件。活动是开发人员将程序的界面功能呈现给用户唯一途径。

2.1.2 Service

服务跟活动一样属于基本组件,但是它无法自行运行,只能后台运行,并且可以和其他组件进行交互,也就会说服务没有界面。这样看起来好像服务一点用没有,而且还占用内存。其实不然,比如你有一个音乐播放器,当你打开这个播放器开始听歌,这是你的好友在QQ上呼叫你,这时你就要切换你的程序,正常来说这样,音乐本该停止播放,但是事实不会,因为它会调用服务,然后继续播放。具体还有什么,我们后续再说。

2.1.3 BroadcastReceiver

广播接收器,广播是一种应用之间消息传输的机制,广播接收器是对发送出来的广播进行过滤并且响应它。例如下载成功通知。

2.1.4 Content Provider

内容提供器是Android提供的第三方应用数据访问方案。
Android拥有非常强大的应用数据保护机制,正常情况下各个应用的数据时不互通的。除了存储在SD卡中的数据。
然而,这样并不利于整个系统的发展,所以Android提供这个内容提供器,应用想对外提供的数据,可以通过派生Content Provider类, 封装成一枚Content Provider,每个Content Provider都用一个uri作为独立的标识,形如:content://com.xxxxx。具体方法我们到后面会说


这里还有一个Intent,Intent中文解释是目的,也就是去哪,在Android也是这个意思,Intent作用就是从一个activity到另一个activity的方法。
Android的三个基本组件——Activity,Service和Broadcast Receiver——都是通过Intent机制激活的
所以说Intent在Android开发中运用也是非常广泛的。


这就里就是Android开发的基本了,接下来。我们就开始具体的来学习应用吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值