Android 开发技术培训.ppt
《Android 开发技术培训.ppt》由会员分享,可在线阅读,更多相关《Android 开发技术培训.ppt(180页珍藏版)》请在三一办公上搜索。
1、Android 开发技术培训,沈大海,Android 的历史,2003,2004,2005,2006,2007,2008,2009,2010,2,Android and OHA(Open Handset Alliance),Google与2007年11月5日宣布组建的一个全球性的联盟组织。联盟成员将支持盟主Google 发布的Android 手机操作系统或者应用软件,共同开发名为Android 的开放源代码的移动系统。共同对抗 Symbian,Windows Mobile,iphone等系统。,3,Android OHA 生态系统,4,Android 市场份额,5,Android Kernel
2、 version,Android based on generic Linux 2.6 kernel Android 1.0 based on Linux2.6.25Android 1.5(cupcake)based on Linux2.6.27Android 1.6(donut)based on Linux2.6.29Android 2.0/2.1(clair)based on Linux2.6.29Android 2.2(Froyo)based on Linux 2.6.32Android 2.3(Gingerbread)based on Linux 2.6.35Android 3.0(H
3、oneycomb)based on Linux 2.6.36 Android special drivers:Ashmem Logger Binder Android power management Low memory killer and Android pmem,Android Release History,Android 1.0(Sept 2008),Android 1.1(Feb 2009),Android 1.5Cupcake(April 2009),Android 1.6Donut(Sept 2009),Android 2.0/2.1Eclair(Oct 2009),Andr
4、oid 2.2Froyo(May 2010),Android 2.3Gingerbread(Dec 2010),Android 3.0Honeycomb(Feb 2011),Android 3.xIce Cream Sandwich(Oct/Nov 2011?)Release DateNot Yet Announced,Android release cycles range from 1 to 9 months.,Android Framework Architecture,9,Android体系结构,应用程序(Applications):依据User的期望而将AF的组件及Libaraies
5、组件组合而成的高阶服务。应用框架(Application Framework,简称AF):这是结合Applications与Libraries的幕后主架构,让Libraries组件能不断地为Applications所重复使用(Reuse)。丰富而又可扩展的视图(Views)内容提供器(Content Providers)资源管理器(Resource Manager)通知管理器(Notification Manager)活动管理器(Activity Manager)Libraries:Android里已经提供的C/C+库存组件(或称模块)。例如,SQLite数据库系统、OpenGL 3D绘图系统
6、等。Android Runtime:Java语言层级的Virtual Machine。Linux核心:Android依赖Linux 2.6来提供核心的服务,例如内存管理、进程(Process)管理、执行绪(Thread)管理等。,10,Android层次-kernel,Android基于Linux 2.6提供核心系统服务,例如:安全、内存管理、进程管理、网络堆栈、驱动模型。Linux Kernel也作为硬件和软件之间的抽象层,它隐藏具体硬件细节而为上层提供统一的服务。使用binder作为进程间通讯机制,取代传统进程间通讯机制,11,Android Hardware Abstraction La
7、yer,用户空间的C/C+库遵循Apache协议定义Android需要linux driver实现的接口将Android彻底和硬件抽象出来,12,Android层次结构-Android Runtime,Android包含一个核心库的集合,提供大部分在Java编程语言核心类库中可用的功能。Dalvik虚拟机则是基于寄存器的,而非大多数 虚拟机所采用的基于栈的实现Dalvik虚拟机依赖于Linux 内核提供基本功能,如线程和底层内存管理。,13,Android包含一个C/C+库的集合,供Android系统的各个组件使用。这些功能通过Android的应用程序框架(application framew
8、ork)暴露给开发者。下面列出一些核心库:系统C库多媒体库:OpenCore界面管理LibWebCoreSGL3D库FreeTypeSQLite,Android层次结构-Libraries,14,Android层次结构Application Framework,通过提供开放的开发平台,Android使开发者能够编制极其丰富和新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等,很多很多。开发者可以完全使用核心应用程序所使用的框架APIs。应用程序的体系结构旨在简化组件的重用,任何应用程序都能发布他的功能且任何其他应用程序可以使用这些功能(
9、需要服从框架执行的安全限制)。这一机制允许用户替换组件。所有的应用程序其实是一组服务和系统,包括:ViewActivityManagerContentProviderNotificationManager,15,Android层次结构Applications,Android魅力的终极体现:对用户:良好的用户体验,强大的用户亲和力 对开发者:快速而灵活的开发平台,让开发者的灵感能快速转化为产品,16,Android Processes,Android Applications,Android apk build and packaging,Android application unpackag
10、ing and run,三种开发形式,SDK开发Windows linux macNDK开发Windows linux源码开发(完全源代码,Linux中开发),Linux操作系统知识 Linux内核知识(C语言)Linux驱动程序知识(C语言)Android底层库(C语言、C+)Dalvik虚拟机(C+、JAVA)Android GUI系统(C+、JAVA)音频、视频和多媒体(C语言、C+、JAVA)电话部分的(C语言、C+、JAVA)连接部分(C语言、C+、JAVA)传感器部分(C语言、C+、JAVA),Android源码开发知识结构:,Android应用开发知识结构:,JAVA语言知识 应
11、用程序架构 GUI设计基础知识 各种视图的使用 2D/3D图形API 应用程序的设计思想,AndroidNDK开发知识结构:,JAVA语言知识 应用程序架构 JNI技术 Linux下C编程,Android debug tools,Adb(Android debug bridge)DmtracedumpEmulatorLogcat MksdcardMonkeySqlite3Eclips Gdb/gdbserver,搭建开发环境Eclipse/ADT,下载并安装eclipse:http:/www.eclipse.org/downloads/下载SDK安装包:http:/启动eclipse-help
12、-Install New Softwares2 在”Work with”中输入一个任意名字3 将https:/dl-添加到网址栏,点击”Add”按钮4 在”Work with”的下拉列表中选定刚刚添加的item,在详细信息框中会有选择列表,推荐全部安装,将开始在线安装过程,31,搭建开发环境Eclipse/ADT,32,搭建开发环境安装SDK,点击Window-Android SDK and AVD Manager-Available Packages,安装需要的SDK创建一个新的AVD1 通过Window-Android SDK and AVD Manager-Virtual Devices
13、-New通过命令行创建:开始-运行-cmd-android create avd n avd-name t 6(创建2.0的)默认创建的路径是C:Documents and SettingsUser-name.androidavd,33,生成一个新的工程,用eclipse创建一个新的android应用:File-New-Android Project在弹出的提示对话框中所有填写所有项目:项目名称所使用SDK版本应用程序名称包名,34,35,运行第一个HelloAndroid,36,从HelloAndroid分析Android应用的要素,AndroidManifest.xmlres-所有的资源
14、Drawable-图片文件 Layout-布局文件 Values-字符串以及属性定义文件Src-代码目录,37,目录的组织,anim/drawable/layout/values/xml/raw/,1)anim目录录下存放着描述animation类型的xml文件。2)drawable目录该目录下存放着.png,.jpg等图片文件。3)layout目录下存放着屏幕UI的layout文件,格式为xml。4)values目录下可以存放多种资源类型的xml文件,例如定义了数组的array.xml,定义了颜色的colors.xml,定义了dimension的dimnes.xml,定义了字符串的strin
15、gs.xml,定义了style的styles.xml。5)xml目录存放了用户自定义的xml文件。6)raw目录可存放了用户的原始数据文件,如声音文件等,这些文件在编译应用程序过程中不被编译,直接加到apk文件中。,38,AAPT打包示意图,39,限定符的类型和有效的值,40,资源管理框架,41,Android应用的要素AndroidManifest,AndroidManifext的作用:描述了程序包的全局变量,包括暴露的应用组件(activities,services等等)和为每个组件的实现类,什么样的数据可以操作,以及在什么地方运行,42,AndroidManifest的主要元素,几乎所有
16、的AndroidManifest.xml(以及许多其他Android的xml的文件)在第一个元素中包含了命名空间的声明xmlns:android=“http:/application:application是Android应用内最高级别(top level)的模块,每个应用内最多只能有一个application,如果应用没有指定该模块,一个默认的application将被启用。application将在应用启动时最先被加载,并存活在应用的整个运行时生命周期。因此一些初始化的工作适合在本模块完成.Application元素有许多属性,其中:“persistent”表示本应用是否为常驻内存,“en
17、able”表示本应用当前是否应当被加载。,43,Android-activity,1.创建activityXxxActivity extends Activity.2.配置AndroidManifest.xml文件launchMode:standard:每次启动新的活动窗口(new操作)singleTop:如果在栈顶是目标活动,则直接打开.否则开启新的活动窗口(new).singleTask:同一任务内不再实例化,不同任务需要实例化.singleInstance:不论是否是同一任务,只要打开就共享.,AndroidManifest的主要元素,activity:activity是applicat
18、ion模块的运行时子元素,标识了一个UI。除了application,一个应用可以声明并实现零至多个其它运行时模块,activity也同样。activity也包含了许多定义它工作状态的属性,其中:“name”是必须的,它指定了该activity所在的文件名,如果该文件所属包不同于该应用的包名(即本描述文件的最开始处),那么名字前面需要加入所在包名。activity通过增加intent-fliter来标识哪些intent可以被处理,同时intent也是调度activity的主要参数。service:service也是application的运行时子元素。Service属于后台模块,启动后将长时间
19、运行,除非停止该service或所在应用进程被杀死,45,Android应用组成元素layout,Android 的UI 布局都以Layout 作为容器,在上面按照规定排列控件,这方面跟JAVA 的Swing 和LWUIT 很像。控件跟Layout 有很多属性是一样的,可以在Properties 里面修改,跟.NET/Delphi 等RAD 类似,其中最常用的属性有以下这些:id=“+id/edtInput”,ID 是连接UI 与代码的桥梁 layout_width=fill_parent,自动填充至屏幕宽度,layout_height 同理 常用的layout有:LinearlayoutRe
20、lativelayoutFramelayoutAbsoluteLayoutAdapterView,46,Android应用四大组件简介,ActivityServiceContentProviderBroadcastReceiver,47,Activity简介,展现为一个用户可视化界面Activity可以多种形式呈现,如全屏模式,对话框模式,透明模式等Activity的部分重要属性:android:label=string resource android:icon=drawable resource android:launchMode=multiple|singleTop|singleTas
21、k|singleInstance,48,Activity的四个状态,Active/Runing一个新 Activity 启动入栈后,它在屏幕最前端,处于栈的最顶端,此时它处于可见并可和用户交互的激活状态。2.Paused 当 Activity 被另一个透明或者 Dialog 样式的 Activity 覆盖时的状态。此时它依然与窗口管理器保持连接,系统继续维护其内部状态,所以它仍然可见,但它已经失去了焦点故不可与用户交互。3.Stoped 当 Activity 被另外一个 Activity 覆盖、失去焦点并不可见时处于 Stoped状态。4.Killed Activity 被系统杀死回收或者没有
22、被启动时处于 Killed状态。,49,Activity的各个回调函数与状态 之间的关系,protected void onCreate(Bundle savedInstanceState);protected void onStart();protected void onResume();protected void onPause();protected void onStop();protected void onDestroy();,50,Android-应用程序的响应性,在Android中,应用的响应性被活动管理器(Activity Manager)和窗口管理器(Window Ma
23、nager(这两个系统服务所监视.当用户触发了输入事件(如键盘输入,点击按钮等),如果应用5秒内没有响应用户的输入事件,那么,Android会认为该应用无响应,便弹出ANR(Application No Response)对话框,如右图.在正常情况下,Android程序会在一条单线程里运行.如果Activity要处理一件比较耗时的工作,应该交给子线程完成,否侧会因为主线程被阻塞,后面的用户输入事件因没能在5秒内响应,导致应用出现ANR对话框.,Service简 介,是什么:Service在Android中是一种长生命周期的组件,它不实现任何用户界面用来做什么:实现不需要用户界面但是需要一直运行
24、的功能,如:音乐播放器怎么用:实现一个自己的service启动执行:context.startService()/context.bindService(),52,ContentProvider简介,ContentProvider是Android提供的一种标准的共享数据的机制,应用程序可以通过content provider访问其它应用程序的一些私有数据ContentProvider的优点:屏蔽了内部数据的存储细节,向外提供了上述统一的接口模型,53,BroadcastReceiver简介,BroadcastReceiver的作用:每个Broadcast Receiver都可以接收一种或若干种
25、Intent作为触发事件BroadcastReceiver不执行任何任务,仅仅是接受并响应广播通知的一类组件。BroadcastReceiver 不包含任何用户界面,54,基础UI,menu:如何打造友好的菜单ListView:用好列表,做好程序Dialog:人机友好互动交流Toast和Notification:温馨的提醒,55,Android的菜单Menu,menu负责管理MenuItem添加一个menuItemadd(int groupId,int itemId,intorder,CharSequence title)删除所有的menuItemclear()MenuItem一个菜单的条目常
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Android 开发技术培训 开发 技术培训
链接地址:https://www.31ppt.com/p-2312235.html