收藏 分销(赏)

疯狂android资料:第一章android平台架构及特性.doc

上传人:二*** 文档编号:4763098 上传时间:2024-10-12 格式:DOC 页数:5 大小:996KB 下载积分:5 金币
下载 相关 举报
疯狂android资料:第一章android平台架构及特性.doc_第1页
第1页 / 共5页
本文档共5页,全文阅读请下载到手机保存,查看更方便
资源描述
2013年1月11日9:45:37 第一章 android应用于开发环境 1.Android系统的底层建立在Linux系统之上,该平台由操作系统、中间件、用户界面和应用软件组成,它采用一种被称为软件叠层的方式进行构建。 2.android系统的体系结构: 应用程序层 应用程序框架 函数库 android运行时 Linux内核 ①应用程序层:各种应用程序 ②应用程序框架:提供大量API框架供开发者使用 ③函数库:包含一套被不同组件所使用的C/C++库的集合。一般来说,android应用开发者不能直接调用这套C/C++库集,但可以通过它上面的应用程序框架来调用这些库。 核心库: 1. 系统C库:一个从BSD系统派生出来的标准C系统库,并且专门为嵌入式Linux设备调整 2. 媒体库:基于PacketVideo的OpenCORE,这套媒体库支持播放和录制许多流行的音频和视频格式,以及查看静态图片。主要包括MPEG4、H.264、MP3、AAC、AMR、JPG、PNG等多媒体格式。 3. Surface Manager:管理对显示子系统的访问,并且可以对多个应用程序的2D和3D图层机提供无缝整合。 4. LibWebCore:一个全新的Web浏览器引擎,该引擎为android浏览器提供支持,也为WebVIew提供支持,WebView完全可以嵌入开发者自己的应用程序中 5. SGL:底层的2D图形引擎 6. 3Dlibraries:基于OpenGL ES1.0API实习的3D系统,这套3D库既可以使用硬件3D加速,也可以使用高度优化的、软件3D加速。 7. FreeType:位图和向量字体显示 8. SQLite:供所有应用程序使用的、功能强大的轻量级关系数据库 ④android运行时 Android运行时由两部分组成:android核心库集和Dalvik虚拟机。其中核心库提供了Java语言核心库所能使用的绝大部分功能,而虚拟机则负责运行android应用程序 Dalvik虚拟机依赖于Linux内核的核心功能,如线程和底层内存管理。 ⑤Linux内核 Android系统建立在Linux2.6之上,LInux内核提供了安全性、内核管理、进程管理、网络协议和驱动模型等核心系统服务。除此之外,Linux内核也是系统硬件和软件叠层之间的抽象层。 把android应用打包成一个可发布的APK包: ①通过DX工具对*.class文件进行转换。转换后通常得到一个*.dex文件 ②通过AAPT工具打包所有的资源文件。打包后通常得到*.ap_文件 ③通过apkbuilder工具把前2步得到的*.dex、*.ap_文件打包成APK包 Android UI方面: android:id:该属性指定了该控件的唯一标识,在Java程序中可以通过findViewById(“id”)来获取指定的android界面组件 android:layout_width:指定该界面组件的宽度。如果该属性值为 fill_parent,则说明该组件与其父容器具有相同的宽度:如果该属性值为wrap_content,则说明该组件的宽度取决于它的内容-基本能包裹它的内容即可 android:layout_height:指定该界面组件的高度。如果该属性值为fill_parent,则说明该组件的高度与父容器相同;如果该属性值为wrap_content,则说明该组件的高度取决于它的内容-基本能包裹它的内容即可 Android应用程序: 1.在应用程序文件结构中res目录、src目录、AndroidManifest.xml文件时android项目所必须的,其它目录、文件都是可选的。 2.res目录存放android项目的各种资源文件,比如layout存放界面布局文件、values目录下则存放各种XML格式的资源文件,例如字符串资源文件:strings.xml;颜色资源文件:colors.xml;尺寸资源文件:dimens.xml。drawable-ldpi、drawable-mdpi、drawable-hdpi这三个子目录则分别存放小、中、大三种图片文件 3.src目录只是一个普通的、保存Java源文件的目录 4.AndroidManifest.xml文件时android项目的系统清单文件,它用于控制android应用的名称、图标、访问权限等整体属性 Java源程序中: //设置使用xxx.xml文件定义的界面布局 setContentView(R.layout.xxx); //获取UI界面中ID为R.id.xx的按钮 Button bn=(Button)findViewById(R.id.xx); AndroidManifest.xml清单文件: -》应用程序的包名,该包名将会作为该应用的唯一标识 -》应用程序所包含的组件,如Activity、Service、BroadcaseReceiver、ContentProvider -》应用程序兼容的最低版本 -》应用程序使用系统所需的权限声明 -》其它程序访问该程序所需的权限声明 以下就是一个AndroidManifest.xml内容: 常用的权限: Android应用程序的基本组件介绍 Android四大组件:Activity、Service、BroadcaseReceiver、ContentProvider 1. Activity和View Activity是android应用程序中负责与用户交互的组件。Activity只能通过setContentView(View )来显示指定的组件 View组件是所以UI控件、容器控件的基类,View组件就是Android应用中用户实实在在看到的部分。但是View组件需要放到容器组件中,或者使用Activity将它显示出来。如果需要通过某个Activity把指定View显示出来,调用Activity的setContentView()方法即可。 setContentView()方法可接受一个View对象作为参数: 2. Service Service与Activity的地位是并列的,它代表一个单独的Android组件。Service与Activity的区别在于:Service通常位于后台运行,它一般不需要与用户交互,印象Service组件没有图形用户界面。 与Activity组件需要继承Activity基类相似,Service组件需要继承Service基类。一个Service组件被运行起来之后,它将拥有自己独立的生命周期,Service组件通常用于为其它组件提供后台服务或监控其它组件的运行状态。 3. BroadcaseReceiver广播消息接收器 BroadcaseReceiver是android应用中另一个重要的组件,从代码实现角度来看,BroadcaseReceiver非常类似于事件编程中的监听器。与普通事件监听器不同的是:普通事件监听器的时间源是程序中的对象,而BroadcaseReceiver监听是事件源是android应用程序中的其它组件。 使用BroadcaseReceiver组件接收广播消息比较简单,开发者只要实现自己的BroadcaseReceiver子类,并重写onReceive(Context context,Intent intent)方法即可。当其它组件通过sendBroadcase()、sendStickyBroadcase()或sendOrderedBroadcase()方法发送广播消息时,如该BroadcaseReceiver也对该消息“感兴趣”(通过IntentFilter配置),BroadcaseReceiver的onReceive(Context context,Intent intent)方法将会被触发。 开发者实现了自己的BroadcaseReceiver之后,通常有两种方式来注册这个系统级的“事件监听器” ①在Java代码中通过Context.registReceiver()方法注册BroadcaseReceiver ②在AndroidManifest.xml文件中使用<receiver....../>元素完成注册 4. ContentProvider 对于android应用而言,它们必须相互独立,各自运行在自己的Dalvik虚拟机实例中,如果这些android应用之间需要实现实时的数据交换。例如我们开发了一个方式短信的程序,当方式短信时需要从联系人管理应用中读取指定联系人的数据-这就需要多个应用程序之间进行实时的数据交换。 5. Android系统为这种跨应用的数据提供了一个标准:ContentProvider。当用户实现自己的ContentProvider时,需要实现如下抽象方法 -》Insert(Uri,ContentValues):向ContentProvider插入数据 -》delete(Uri,ContentValues):删除ContentProvider中指定数据 -》update(Uri,ContentValues,String,String[]):更新ContentProvider中指定数据 -》query(Uri,String[],String,String[],String):从ContentProvider查询数据 Intent和IntentFilter Intent并不是Android应用的组件,但它对于android应用的作用非常大----它是android应用内不同组件之间通信的载体。当android运行时需要连接不同的组件时,通常就需要借助于Intent来实现。Intent可以启动应用程序中另一Activity,也可以启动一个Service组件,还可以发送一条广播消息来触发系统中的BroadcaseReceiver,也就是说,Activity、Service、BroadcaseReceiver三种组件之间通信都以Intent作为载体,只是不同组件使用Intent的机制略有区别而已。 -》当需要启动一个Activity时,可调用Context的startACtivity(Intent intent)方法,该方法中的Intent参数封装了需要启动的目标Activity的信息 -》当需要启动一个Service时,可调用Context的startService(Intent intent)方法或bindService(Intent Service,ServiceConnection conn,int flags)方法,这两个方法中的Intent参数封装了需要启动的目标Activity的信息 -》当需要触发一个BroadcaseReceiver时,可调用Context的sendBroadcase(Intent intent)、sendStickyBroadcase(Intent intent)或sendOrderedBroadcase(Intent intent,String receiverPermission)方法来发送广播消息,这三个方法中的Intent参数封装了需要触发的目标BroadcaseReceiver的信息。 当一个组件通过Intent表示了启动或触发另一个组件的“意图”之后,这个意图分为两类: -》显示Intent:显示Intent明确指定需要启动或者触发的组件的名称 -》隐式Intent:隐式Intent只是指定需要启动或者触发的组件应满足怎样的条件 对于现实Intent而言,android系统无需对该Intent做任何解析,系统直接找到指定的目标组件,启动或触发它即可。 对于隐式Intent而言,android系统需要对该Intent进行解析,解析出它的条件,然后再去系统中查找与之匹配的目标组件。如果找到符合条件的组件,就启动或触发它们。 那么android系统如何判断被调用组件是否符合隐式Intent,这就需要靠IntentFilter来实现了,被调用组件可通过IntentFIlter来声明自己所满足的条件-----也就是声明自己到底能处理哪些隐式Intent。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服