资源预览内容
第1页 / 共58页
第2页 / 共58页
第3页 / 共58页
第4页 / 共58页
第5页 / 共58页
第6页 / 共58页
第7页 / 共58页
第8页 / 共58页
第9页 / 共58页
第10页 / 共58页
亲,该文档总共58页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
Android应用程序开发基础,姓名:张茂森,目录,了解AndroidHello World应用程序组件ActivityServiceContent Provider,一.了解Android,1.Android的版本历史Ice Cream Sandwich 冰淇淋三明治4.0,一.了解Android,2.Android的前世今生2003年安迪鲁宾成立了自己的公司,致力于研发出下一代的智能机操作系统。2005年7月,成立仅22个月的Android公司被急于开拓无线互联网业务的Google收购。2007年11月5日Google宣布与其他33家手机制造商、手机芯片供货商、电信运营商联合组成开放手机联盟。2008年9月23日,Google与美国电信运营商T-Mobile在纽约发布第一款Google手机-G1。,一.了解Android,3.Android架构 Android是一个包含操作系统,中间件和关键应用的软件堆栈。 Android SDK提供了在Android平台上使用Java编程语言开发应用的必须的工具和API。,一.了解Android,3.Android架构 Linux内核Android依赖Linux2.6内核提供的核心服务,包括安全内存管理进程管理驱动模型等;内核也是硬件和软件堆栈的其余部分之间的抽象层。,一.了解Android,3.Android架构系统库包含一组C/C+库供系统各个组成部分使用;开发者通过应用程序框架层使用这部分功能;,一.了解Android,3.Android架构Android运行时核心库为JAVA语言的核心库提供功能;DVM 每一个Android应用程序都拥有一个Dalvik虚拟机实例,每个应用程序都运行在一个单独的Linux进程中;DVM执行的不是Java字节码,而是由字节码转换的dex文件;,一.了解Android,3.Android架构Android应用程序框架应用程序框架是我们进行Android开发的基础,大部分情况下我们都是和它打交道;,一.了解Android,3.Android架构Android应用程序Android附带了一些核心的应用程序Email客户端、SMS 、日历 、地图 、浏览器 、联系人 等;所有这些都是使用JAVA语言编写的 ;,目录,了解AndroidHello World应用程序组件ActivityServiceContent Provider,二.Hello World,1.创建Hello world如右图所示新建一个Android工程;IDE会自动生成Android工程的配置文件,资源文件,Activity文件等;点击运行,一个Hello world程序就完成;,二.Hello World,2.源文件目录结构,二.Hello World,3.APK文件结构,二.Hello World,4.安装目录结构/data/app 文件夹下存放完整的APK;/data/dalvik-cache 文件夹下存放解压后的dex文件;/data/data/package-name文件夹下存放应用程序数据存储目录;,二.Hello World,5.Android编译步骤Android Asset Packaging Tool负责编译资源文件和生产R.java文件;AIDL工具负责将aidl文件转换为JAVA接口文件; 所有的JAVA文件,包括R.java和aidl都会被java编译器编译成class文件;DEX工具会把所有的class文件和第三方类库的class文件转换成dex文件;,二.Hello World,5.Android编译步骤 未被编译的资源文件(如图片),编译后的资源文件,dex文件会被apkbuilder打包成APK文件;所有的APK文件,必须进行签名然后才能安装到手机或者模拟器上;最后如果你是以Rlease模式签名的话,就必须使用zipalign工具进行优化,这样的话会大幅降低应用程序在运行过程中对内存的消耗;,目录,了解AndroidHello World应用程序组件ActivityServiceContent Provider,三.应用程序组件,1.四大组件应用程序组件是Android应用程序的基础,每个组件都是系统进入你应用的一个不同入口。每个组件都在你构建项目的过程中扮演者独特的功能。四大组件分别为: ActivityServiceBroadcast ReceiverContent Provider,三.应用程序组件,2.四大组件之 - ActivityActivity代表用户界面中的一个屏幕。比如,一个Email客户端会用一个Activity显示所有的新邮件,用另一个Activity来阅读邮件。尽管这些Activity协同完成一个顺畅的用户体验,但是他们彼此却是独立的。正因为如此,另一个应用可以启动其他应用的Activity。比如一个Camera的应用可以启动Email客户端撰写邮件的Activity来分享他捕捉到的图片。Android系统会管理所有的Activity,初始化Activity,销毁Activity等;我们要做的只是在正确的时间做正确的事情。,三.应用程序组件,3.四大组件之 - ServiceService是在后台运行长时间操作或者执行远程进程工作的一种组件。Service并不提供用户界面。例如,一个Service可以在用户使用另一个应用时在后台播放音乐;或者在不阻塞用户与Activity交互的前提下,完成从网络上抓取数据。其他的组件,比如Activity可以启动或者停止Service,也可以通过Bind方式来和Service交互。,三.应用程序组件,4.四大组件之 - BroadcastReceiverBroadcastReceiver是响应系统全局广播的一个组件。由系统发起的广播有很多,比如,屏幕已关闭,电池电量低等。应用程序也可以自定义广播,比如,定义一个告诉其他应用程序数据已下载完毕并可以被使用的广播。尽管BroadcastReceiver不提供用户界面的显示,但它可以通过状态栏通知也告诉用户某个事件发生了。但是更常见的应用场景是, BroadcastReceiver只是系统其它组件的gateway(出入口),他本身要做的事情很少。比如,用户打开了网络,某个网络下载的Service需要启动。,三.应用程序组件,5.四大组件之 - ContentProviderContentProvider负责管理应用的共享数据。这些数据你可能存储在文件中、SQLite数据库中、WEB上、或者你可以访问到的任何位置。通过ContentProvider,其他的应用程序就可以查询或者修改这些数据(ContentProvider 允许的前提下)。例如,Android系统提供了管理用户联系人信息的ContentProvider。因此,其他的应用只要是拥有正确的权限都可以通过该ContentProvider读取或者修改某个联系人信息。ContentProvider对应用的私有数据也是比较有用的。他可以封装变化,对外提供统一接口,有点像DAO层。,三.应用程序组件,6.系统组件的纽带 - Intent在系统组件中Activity,Service,BroadcaseReceiver是被一个叫Intent异步消息激活的。Intent将独立的组件联系起来,不管这些组件是不是属于一个应用程序。startActivity ()或者startActivityForResult ()方法来启动一个Activity。startService方法用来启动一个Service。bindService()方法用来绑定一个Service。 sendBroadcast() 来启动一个BroadcaseReceiver。,三.应用程序组件,7. Android系统特性 Android应用没有一个单一的入口(比如说,没有main()函数); Android中任何一个应用都能启动其他应用的组件。比如,如果你想要用户使用摄像头照一张照片,这个功能另一个应用能实现,你的应用就可以使用它,而不必由你自己再开发一个捕捉照片的activity。对用户来说,照相机好像就是你应用的一部分。退出应用不等于进程被销毁。当应用的某个或某些组件需要执行时,Android将启动此应用的进程;当系统必须为了其他应用恢复内存时,进程被停止。,目录,了解AndroidHello World应用程序组件ActivityServiceContent Provider,四.ACTIVITY,1. Activity简介Activity是应用程序的重要组成部分,他提供一个用户可以操作的界面。一个应用可能有多个独立的Activity组成。一般情况下有一个Activity被指定为“Main Activity”,当用户第一次启动该应用的时候它会被呈现给用户。每个Activity都可以启动其他的Activity来执行不同的动作。每当一个新的Activity启动的时候,当前的Activity就被停止,但是系统会把这个Activity保存在后退栈(Back Stack)中。,四.ACTIVITY,1. Activity简介当一个新的Activity启动的时候他会被Push到Back Stack中并获取用户的焦点。Back Stack遵循“先进后出”的机制,所以当用户在在新的Activity上做完操作,点击返回键的时候,该Activity会被Pop出栈(并且被销毁),然后上一个Activity就被恢复(Resume)。 Activity有多个回调的方法,以此来表示其状态的转变,比如创建(onCreate),恢复(onResume)等。这些回调方法提供给你一个在正确时间做正确事情的机会。比如在Activity停止的时候释放一些大的对象(网络连接,数据库连接等)。状态间的切换回伴随着Activity的整个生命周期。,四.ACTIVITY,2. Activity的使用 创建一个继承自Activity的子类。在该子类中,实现回调方法。其中有两个比较重要的回调方法:onCreate() - 初始化;通过setContentView()定义用 户界面;onPause() - 在该方法中保存用户的修改;实现一个用户界面。通常是定义一个布局文件,然后通过 setContentView()设置到Activity中。,四.ACTIVITY,2. Activity的使用 在配置文件中声明Activity。只有声明后的Activity对系统来说才是可访问的。启动Activity 。通过调用startActivity(Intent intent)启动一个应用自己或者另一个应用的Activity。启动应用内的Activity(显示的Intent):,四.ACTIVITY,2. Activity的使用启动其他应用的Activity(隐式的Intent):启动Activity并获取结果:startActivityForResult (Intent intent, int requestCode) onActivityResult(int requestCode, int resultCode, Intent data) 和setResult (int resultCode, Intent data) 关闭Activity。,四.ACTIVITY,3. Activity的生命周期通过实现回调方法来管理Activity的生命周期是开发一个灵活和健壮应用的关键。Activity存在着三种基本状态:Resumed(运行):屏幕最前端并有焦点Paused(暂停):不在最前端但是可见,可杀Stopped(停止):不可见,可杀当Activity处于暂停或者停止状态的时候,系统有可能为了回收内存而干掉他。系统有可能调用他的finish方法,有可能直接杀死其所在进程。通过以下两个图详细解释其生命周期内的状态变化和回调函数的作用:,
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号