Android简单介绍

来源:互联网 发布:车牌位置标识数据集 编辑:程序博客网 时间:2024/06/08 17:19

Android平台架构和特性

  • Android系统的底层建立在Linux系统之上,由 操作系统、中间件、用户界面和应用软件4层组成,采用软件叠层的方式进行构建,这种结构可以让层之间相互分离,保证了层之间的低耦合,当层时间发生改变时,其他层无须做任何改变
组成 内容 应用程序层 Home,Contacts,Phone,Browser… 应用程序框架 ActivityManager,WindowManager,ContentProvider,ViewSystem,PackageManage,TelephonyManager,ResourceManager,LocationManager,NoticationManager 函数库,Android Runtime SufaceManager,MediaFramework,SQLite,OpenGL/ES,FreeType,WebKit,SGL,SSL,Libc Linux内核 DisplayDriver,CameraDriver,FlashMemoryDirver,Binder(IPC)Driver,KeypadDriver,WifiDriver,AudioDriver,PowerManagement

* 应用程序层:包含一系列核心应用程序,比如 短信、电话、日历、浏览器等,采用Java编写,我们开发出来的应用一般是在这里工作
* 应用程序框架:我们在开发Android程序时,就是面向底层应用程序框架进行的,提供程序需要的API框架
* 函数库:这是一套被不同组件所使用的 C/C++库的集合,一般来说,我们是不能直接调用的,但是可以通过通过该层提供的框架来调用这些库

* C库:从BSD派生出来的编程C系统库* 媒体库:基于PacketVideo的OpenCORE,支持播放和录制音频和视频格式,以及查看静态图片* SufaceManager:对应用程序提供2D,3D支持* LibWebCore:Web浏览器引擎* SGL:底层的2D图形引擎* 3D libraries:OpenGL ES API 实现的3D 系统,我们看到手机中的3D硬件加速,就是这个地方* FreeType:位图和向量字体显示* SQLite:Android中内嵌的数据库 SQLite 是面向嵌入式设备的小型轻量级关系库,不要看它小,功能还是很齐全的

* Android Runtime:Andriod在运行的时候有2部分组成,Android核心库集和 ART,核心库集成了Java核心库中所使用的大部分功能,Android系统中的虚拟机负责运行Android应用程序

* tips:5.0 之前的Android运行由 Dalvik 虚拟机和Android核心库组成,由于Dalvik采用 JIT 的解释器进行动态编译并执行,导致Android程序运行时比较慢,5.0之后采用的是ART模式也叫AOT是在用户安装应用的时候进行预编译,将原本的程序运行时的编译动作提前到应用安装时,这样使得程序在运行时可以减少动态编译的开销,从而提升了Android 程序的运行效率* 比较:APT需要在安装App时进行AOP 处理,因此ART需要占用更多的存储空间,安装和系统启动时间也会延迟,这也是我们常常会有的一个困惑,明明下载的应用只有几M,但是安装完成时候,查看系统应用程序占用空间已经达到了几十M的大小,就是因为在5.0之后的系统中采用的ART模式有关。此外,ART还支持 ARM、x86、MIPS架构,能兼容64位系统
  • Linux内核:Android 系统是建立在Linux 2.6 之上的,Linux内核提供了安全,内存,进程,网络,驱动模型等核心系统服务,也是系统硬件和软件叠层之间的抽象层,也就是他是离手机硬件最近的一个集成层

  • 看完以上我们就要思考那么为什么Android系统采用这种分层的设计模式呢,学过计算机网络的同学应该想到,Android的架构设计和 OSI七层设计是很类似的,每一层互不干扰,又互相联系,每一层都完成特定的工作,这种分层设计带来的好处大家在学计算机网络的时候应该都有所了解了,这里就不说了。重要的是这种设计也降低了我们学习的成本,好多同学表示不知道Android该如何去学习,学了小半年还是一头雾水,我认为这些同学还是没有深入体会到Android系统架构的精髓,应用层才刚开始了解,就去学最下面Linux的东西,这样肯定是一头雾水,我们应该循序渐进,从上到下,这样日积月累自然你的水平就提高了

Android开发环境

这部分就少写点了,开发工具主要就是Eclipse,AndroidStudio当然AndroidStudio是一片好评了,不过如果你的电脑配置不够高,还是放弃AndroidStudio先用Eclipse吧【这里多说几句,记得AS早期那会,国内一些开发者拿着新款Mac或是高配Win电脑一致推崇这玩意就是好啊,搞的大家好像不用这玩意就是低人一等,可能也是大家好面子看到别人都说好所以自己也说好,很少听到批评的声音,所以现在如果你电脑不够8G+固态,CPU不是中高端都没法用这玩意】
总是就是能上AS就上

Android程序目录结构

主要目录结构如下:

  • 项目名
    • libs:放各种jar包
    • res:资源目录文件, layout 存放界面布局文件,values各种xml格式资源文件,例如:strings.xml,colors.xml,dimens.xml
      • drawable
      • layout
      • values
    • src:Java代码
    • AndroidManifest.xml:项目清单文件

在AS中还会有 build这么个目录,放AS自动生成的各种资源文件

Android应用的基本组成介绍

Activity,Service,BroadcastReceiver,ContentProvider
Intent IntentFilter

  • Activity 和 view

    • Activity是Android应用中负责与用户交互的组件,类似Swing中的JFrame
    • View是所有UI控件,容器控件的基类,就是你应用程序中看到部分
  • Serviec

    • Service是与Activity并列的地位,也是一个单独的Android组件,与Activity的区别就是 Service运行在后台,一般不需要和用户交互,没有用户图形界面,拥有自己的独立生命周期,一般用来给其他组件提供后台服务或监控其他组件的运行状态
  • BraodcastReceiver

    • 广播接收器,类似于事件编程中的监听器,于普通事件监听器不同的是,普通监听器是事件源是程序中的对象,这里监听的是Android应用中的其他组件
  • ContentProvider

    • 一般Android应用,是互相独立的,各自运行在各自的进程中,如果Android应用之间需要进行数据交换,就可以使用Android提供的这种机制来实现,通常结合使用的是 ContentResolver,使用ContentProvider来保留数据,ContentResolver来接收数据
  • Intent 和 IntentFilter

    • 并不是Android应用的组件,但是作用却是非常大的,它是不同组件之间的通信的载体,当我们需要连接不同的组件时候,就要借助Intent来实现,Intent可以启动Activity,Service,还可以发送一条广播消息来触发 BroadReceiver,只是不同的组件使用Intent的机制不同罢了
0 0
原创粉丝点击