欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    第8章 Android应用程序组成.ppt

    • 资源ID:70106302       资源大小:920KB        全文页数:44页
    • 资源格式: PPT        下载积分:15金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要15金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    第8章 Android应用程序组成.ppt

    第8章 Android应用程序组成AndroidAndroid应用程序的重要组成部分,包括活动应用程序的重要组成部分,包括活动(ActivityActivity)、广播接收器()、广播接收器(Broadcast ReceiverBroadcast Receiver)、服)、服务(务(ServiceService)、内容提供者()、内容提供者(ContentProviderContentProvider)。一个)。一个AndroidAndroid应用必定包含至少一个应用必定包含至少一个ActivityActivity,其他的,其他的3 3个组成个组成部分为可选部分。部分为可选部分。8.1 深入理解Activity接下来将我们将学习接下来将我们将学习ActivityActivity直接的纽带直接的纽带意图意图(IntentIntent)。)。8.1.1 使用Intent连接Activity意图(意图(IntentIntent)被用来连接各个)被用来连接各个ActivityActivity,也被用来在各,也被用来在各个个ActivityActivity中传递数据。在本节中将学习:中传递数据。在本节中将学习:(1 1)创建)创建IntentIntent(2 2)使用)使用startActivitystartActivity()()调用调用IntentIntent完成跳转完成跳转(3 3)使用)使用startActivityForResultstartActivityForResult()()方法调用方法调用IntentIntent(4 4)使用)使用IntentIntent在在ActivityActivity中传递数据中传递数据使用使用IntentIntent完成完成ActivityActivity的跳转只需两个步骤:的跳转只需两个步骤:1.1.创建创建IntentIntent在创建在创建IntentIntent时,我们可以使用如下构造方法:时,我们可以使用如下构造方法:IntentIntent.Intent(.Intent(ContextContext packageContextpackageContext,ClassClass clscls)2.2.调用调用IntentIntent创建完成后,我们可以使用创建完成后,我们可以使用startActivitystartActivity()()方法调用方法调用IntentIntent以完成跳转,语法格式如下:以完成跳转,语法格式如下:ActivityActivity.startActivity(.startActivity(IntentIntent intent)intent)完成了完成了IntentIntent最基本的应用,让我们接着挖掘最基本的应用,让我们接着挖掘IntentIntent的使用,的使用,在一个在一个ActivityActivity跳转到另一个跳转到另一个ActivityActivity时可以通过时可以通过IntentIntent传传递数据。这也是递数据。这也是IntentIntent十分实用的一个功能。使用步骤分为十分实用的一个功能。使用步骤分为两步:两步:(1 1)在起始)在起始ActivityActivity中存入需要传递的数据。语法格式为:中存入需要传递的数据。语法格式为:IntentIntent.putExtra(.putExtra(StringString name,name,StringString value)value)(2 2)在目标)在目标ActivityActivity中取出中取出IntentIntent中携带的数据,语法格式中携带的数据,语法格式为:为:1.1.IntentIntent.getExtras.getExtras()()接着我们要做的事情就是在接着我们要做的事情就是在Activity1Activity1中取得我们传递的数据:中取得我们传递的数据:(1 1)通过)通过getIntentgetIntent()()方法得到方法得到intentintent对象对象(2 2)通过)通过getExtrasgetExtras()()方法得到方法得到BundleBundle对象对象(3 3)通过)通过getStringgetString(String keyString key)方法得到具体的数)方法得到具体的数最后运行程序,效果图如下所示:最后运行程序,效果图如下所示:我们希望从一个界面跳转到另一个界面进行相关的工作如注我们希望从一个界面跳转到另一个界面进行相关的工作如注册等,在注册页面完成输入相关信息后再返回到起始页面。册等,在注册页面完成输入相关信息后再返回到起始页面。并显示用户在注册页面输入的相关信息。这时我们可以使用并显示用户在注册页面输入的相关信息。这时我们可以使用另一种启动另一种启动ActivityActivity的方式:的方式:startActivityForResultstartActivityForResult(Intent Intent intentintent)使用它的主要步骤如下:使用它的主要步骤如下:(1 1)新建)新建IntentIntent,并使用,并使用startActivityForResultstartActivityForResult()()方法调方法调用该用该IntentIntent。(2 2)重写)重写onActivityResultonActivityResult()()方法,在方法中处理返回结果。方法,在方法中处理返回结果。(3 3)在目标)在目标ActivityActivity中,新建一个空指向的中,新建一个空指向的IntentIntent,并绑定,并绑定数据。数据。(4 4)使用)使用setResultsetResult()()方法,将方法,将IntentIntent传递到结果中。传递到结果中。(5 5)调用)调用finish()finish()方法结束目标方法结束目标ActivityActivity。运行代码之后,得到的效果图如图运行代码之后,得到的效果图如图1 1、2 2、3 3所示:所示:图图1 1 图图2 2 图图3 38.1.2 Activity的生命周期首先,首先,ActivityActivity包括如下生命周期:包括如下生命周期:(1 1)onCreateonCreate()()(2 2)onStartonStart()()(3 3)onResumeonResume()()(4 4)onPauseonPause()()(5 5)onStoponStop()()(6 6)onDestroyonDestroy()()(7 7)onRestartonRestart()()让我们通过下图来更直观地认识它。让我们通过下图来更直观地认识它。让我们新建两个让我们新建两个ActivityActivity分别命名为分别命名为ActivityAActivityA和和ActivityBActivityB,并重写这两个,并重写这两个ActivityActivity的的7 7个生命周期,在执行时添加日志个生命周期,在执行时添加日志打印。打印。通过以上两个通过以上两个ActivityActivity的代码,我们可以观察日志,以进一的代码,我们可以观察日志,以进一步理解步理解ActivityActivity的生命周期。运行以上代码,当程序启动时,的生命周期。运行以上代码,当程序启动时,观察日志如下:观察日志如下:从日志得出结论,从日志得出结论,ActivityAActivityA在程序启动时以供经历了在程序启动时以供经历了3 3个生个生命阶段,分别是命阶段,分别是onCreateonCreate,onStartonStart()()以及以及onResumeonResume()(),这与,这与我们之前的分析不谋而合。此时我们之前的分析不谋而合。此时ActivityAActivityA已经可以进行用户已经可以进行用户操作了,所以我们可以单击操作了,所以我们可以单击ButtonButton按钮以实现按钮以实现ActivityActivity的转的转换。换。同样地,当我们从同样地,当我们从ActivityBActivityB再次跳转到再次跳转到ActivityAActivityA时,日志时,日志如图所示:如图所示:到这里,到这里,ActivityActivity依然没有执行销毁过程也就是系统还没有依然没有执行销毁过程也就是系统还没有执行执行onDestroyonDestroy()()方法。不要着急,按下手机的方法。不要着急,按下手机的backback键,此时键,此时程序会回到上一个程序会回到上一个ActivityActivity,也就是,也就是ActivityBActivityB,并销毁,并销毁ActivityAActivityA,那么看看输出的日志吧:,那么看看输出的日志吧:接下来,让我们想一想,当按下系统的接下来,让我们想一想,当按下系统的HomeHome键后,键后,ActivityActivity的生命周期如何呢?我们依然观察日志:的生命周期如何呢?我们依然观察日志:我们看到我们看到ActivityAActivityA只执行了两个过程:只执行了两个过程:onPauseonPause()()以及以及onStoponStop()(),当我们长按,当我们长按HomeHome键再次进入程序,按照我们的推理,键再次进入程序,按照我们的推理,ActivityActivity应该执行的生命周期流程应该是:应该执行的生命周期流程应该是:onRestartonRestart()()onStartonStart()()onResumeonResume()()日志如图所示:日志如图所示:8.2 使用广播接收器既然有直接既然有直接IntentIntent就肯定有间接就肯定有间接IntentIntent,间接,间接IntentIntent是指是指一个没有指定具体目标的一个没有指定具体目标的IntentIntent,只是在本身被创建时添,只是在本身被创建时添加了一些描述信息,如种类、动作等。这类加了一些描述信息,如种类、动作等。这类IntentIntent通常会通常会被被“广播广播”出去,所有关心该出去,所有关心该IntentIntent的广播接收器都会接的广播接收器都会接受广播并处理。受广播并处理。8.2.1 发送广播一个一个IntentIntent包含的说明信息如下:包含的说明信息如下:(1 1)ActionAction:操作,要执行的动作的定义;:操作,要执行的动作的定义;(2 2)data:data:数据:对于指定动作相关联的数据;数据:对于指定动作相关联的数据;(3 3)typetype:数据类型,对动作的数据类型;:数据类型,对动作的数据类型;(4 4)categoycategoy:类别,对执行动作的附加信息;:类别,对执行动作的附加信息;(5 5)extrasextras:附件信息,其他所有的附加信息;:附件信息,其他所有的附加信息;(6 6)componentcomponent:目标组件,指定目标组件。:目标组件,指定目标组件。8.2.2 接收广播AndroidAndroid中的收音机叫做广播接收器中的收音机叫做广播接收器BroadcastReceiverBroadcastReceiver。每一个广播接收器都必须有一个。每一个广播接收器都必须有一个IntentIntent过滤器,用以指定接收怎样的过滤器,用以指定接收怎样的IntentIntent广播。广播。要使用要使用BroadcastReceiverBroadcastReceiver需要如下需要如下4 4个步骤:个步骤:(1 1)新建一个)新建一个IntentIntent过滤器过滤器(2 2)新建一个)新建一个BroadcastReceiverBroadcastReceiver(3 3)注册广播接收器)注册广播接收器(4 4)注销广播接收器)注销广播接收器8.2.3 广播实例接下来我们通过一个实例来完成对广播的实践,在实例中接下来我们通过一个实例来完成对广播的实践,在实例中你可以学到如何发送一个广播,并在你可以学到如何发送一个广播,并在ActivityActivity中实现广播中实现广播的接收,并在接收到广播后读取的接收,并在接收到广播后读取IntentIntent携带的数据显示在携带的数据显示在屏幕上。屏幕上。1.1.布局文件布局文件在配置文件中添加如下在配置文件中添加如下3 3个组件,如表所示:个组件,如表所示:组组件件类类型型IDID含含义义TextVieTextView wTvTv显显示接收到的示接收到的IntentIntent中的信中的信息息ButtonButtonBtn1Btn1发发送一种广播送一种广播ButtonButtonBtn2Btn2发发送另一种广播送另一种广播2.2.整体设计整体设计整体设计中,在整体设计中,在onCreateonCreate()()方法中完成接收器的新建和注册,方法中完成接收器的新建和注册,在初始化界面函数中完成按钮的单击事件,不同的按钮发送在初始化界面函数中完成按钮的单击事件,不同的按钮发送不同不同IntentIntent的广播。的广播。3.3.初始化界面函数初始化界面函数按下按下btn1btn1时发送时发送actionaction为为ACTION_1ACTION_1的的IntentIntent,按下,按下btn2btn2时发时发送送actionaction为为ACTION_2ACTION_2的的IntentIntent。4.Activity4.Activity结束时,注销广播接收器结束时,注销广播接收器运行代码之后,效果如组图所示:运行代码之后,效果如组图所示:8.3 使用服务本节将介绍本节将介绍AndroidAndroid应用程序的另一重要组成部分应用程序的另一重要组成部分服服务(务(ServiceService)。服务可以看做是一个没有界面的)。服务可以看做是一个没有界面的ActivityActivity。服务运行在后台,不可交互,它不可以自己启动,需要其服务运行在后台,不可交互,它不可以自己启动,需要其他的他的ContextContext执行执行startServicestartService()()开始服务或者执行开始服务或者执行bindServicebindService()()绑定服务。绑定服务。8.3.1 新建服务服务就类似于一个没有界面的服务就类似于一个没有界面的ActivityActivity,不同的是他们的,不同的是他们的存在的意义和自身的生命周期。新建服务时,步骤如下:存在的意义和自身的生命周期。新建服务时,步骤如下:(1 1)新建一个类,继承自)新建一个类,继承自ServiceService类类(2 2)重写)重写ServiceService的几个重要方法的几个重要方法接下来就开始进入具体的实现步骤,首先在接下来就开始进入具体的实现步骤,首先在EclipseEclipse的工程浏的工程浏览器中选择新建一个工程,新建好一个工程后,再次单击右览器中选择新建一个工程,新建好一个工程后,再次单击右键,选择新建一个键,选择新建一个ClassClass,如图所示:,如图所示:接着在弹出的新建接着在弹出的新建JavaJava类对话框中输入类名,选择父类类对话框中输入类名,选择父类(SuperclassSuperclass)为)为android.app.Serviceandroid.app.Service,如图所示。,如图所示。单击单击FinishFinish后,一个新的类就创建完毕了,接着在空白处单后,一个新的类就创建完毕了,接着在空白处单击右键选择击右键选择“SourceSource”,在弹出的菜单中选择重写,在弹出的菜单中选择重写/实现方法实现方法(Override/Implements MethodOverride/Implements Method),如图所示:),如图所示:选择该功能后,就进入了如图所示重写方法对话框,在选择该功能后,就进入了如图所示重写方法对话框,在ServiceService下选择:下选择:(1 1)onCreateonCreate()()(2 2)onDestroyonDestroy()()(3 3)onRebindonRebind()()(4 4)onStartonStart()()(5 5)onUnbindonUnbind()()连同在创建时就默认重写的连同在创建时就默认重写的onBindonBind()()方法,我们一共需要完方法,我们一共需要完成成ServiceService类的类的6 6个重要方法,也就是它的个重要方法,也就是它的6 6个生命周期。个生命周期。8.3.2 使用Service在启动在启动ServiceService之前千万不要忘记了在之前千万不要忘记了在AndroidManifestAndroidManifest注注册文件中为册文件中为ServiceService注册,否则系统将无法找到注册,否则系统将无法找到ServiceService。添加了添加了ServiceService的注册文件如下所示,注意的注册文件如下所示,注意serviceservice添加的添加的位置,它是与位置,它是与activityactivity平级的。平级的。启动启动ServiceService有两种方法分别是:有两种方法分别是:1.1.ContextWrapperContextWrapper.startService(.startService(IntentIntent service)service)2.2.ContextWrapperContextWrapper.bindService(.bindService(IntentIntent service,service,ServiceConnectionServiceConnection connconn,intint flags)flags)先分析第一种方法:先分析第一种方法:startServicestartService(intentintent)。单击)。单击startServicestartService按钮,显示效果如图所示:按钮,显示效果如图所示:接着,单击接着,单击stopServicestopService,这样就可以停止服务了,此时显示,这样就可以停止服务了,此时显示如图所示。如图所示。成功使用成功使用startServicestartService()()方法启动服务后,我们接着使用另方法启动服务后,我们接着使用另一种方法启动一种方法启动ServiceService,就是,就是bindServicebindService()()方法了。方法了。接着我们就可以运行程序了,运行后效果如图所示:接着我们就可以运行程序了,运行后效果如图所示:单击单击unBindServiceunBindService按钮,解除绑定。效果如图所示,这表明按钮,解除绑定。效果如图所示,这表明成功解除绑定:成功解除绑定:8.3.3 Service的生命周期本小节我们将通过日志文件来揭开本小节我们将通过日志文件来揭开ServiceService生命周期的神生命周期的神秘面纱。秘面纱。1.1.startServicestartService()()方法生命周期方法生命周期如果通过如果通过startServicestartService()()方法启动服务,则它的生命周期方法启动服务,则它的生命周期如下:如下:onCreateonCreate()()onStartonStart()()onDestroyonDestroy()()这就是一这就是一个服务完整的生命流程,如果重复个服务完整的生命流程,如果重复startServicestartService()(),则不,则不会进入会进入onCreateonCreate()()方法,而是直接调用方法,而是直接调用onStartonStart()()方法。方法。2.2.bindServicebindService()()生命周期生命周期如果通过如果通过bindServicebindService()()方法启动服务,则其生命周期如下所方法启动服务,则其生命周期如下所示:示:onCreateonCreate()()onBindonBind()()onUnbindonUnbind()()onDestroyonDestroy()()我们新建一个工程,首先将之前新建的我们新建一个工程,首先将之前新建的MyServiceMyService类复制到本类复制到本工程,接着在工程中新建一个工程,接着在工程中新建一个MainActivityMainActivity类:类:布局文件中添加布局文件中添加3 3个个ButtonButton按钮,如下表所示:按钮,如下表所示:接着我们新建另一个接着我们新建另一个ActivityActivity,名为,名为NewActivityNewActivity,在该,在该ActivityActivity中进行中进行bindServicebindService()()方法和方法和unbindServiceunbindService()()方法。方法。首先,在布局文件中添加首先,在布局文件中添加3 3个个ButtonButton按钮,如下表所示:按钮,如下表所示:我们通过如下步骤进行我们通过如下步骤进行ServiceService生命周期的研究:生命周期的研究:1.1.先开始服务后绑定服务先开始服务后绑定服务先开始服务先开始服务startServicestartService()(),接着绑定服务,接着绑定服务bindServicebindService()()。我们观察其执行流程。我们观察其执行流程。根据日志,我们发现它的生命周期为:根据日志,我们发现它的生命周期为:onCreateonCreate()()onStartonStart()()onBindonBind()(),2.2.先解除绑定后停止服务先解除绑定后停止服务此时我们单击返回到此时我们单击返回到MainActivityMainActivity按钮,单击按钮,单击stopstop按钮,我按钮,我们会发现无法正常结束服务,我们必须在们会发现无法正常结束服务,我们必须在NewActivityNewActivity中先解中先解除绑定,才能正常结束。也就是说:服务被绑定后不能直接除绑定,才能正常结束。也就是说:服务被绑定后不能直接停止。停止。单击单击unbindServiceunbindService时日志如图所示:时日志如图所示:接着跳转到接着跳转到NewActivityNewActivity,单击,单击stopServicestopService按钮,这样才能按钮,这样才能正常结束服务。此时,日志如图所示:正常结束服务。此时,日志如图所示:3.3.先绑定服务后启动服务先绑定服务后启动服务接下来我们再来看先绑定服务接下来我们再来看先绑定服务bindServicebindService()(),在开始服,在开始服务务startServicestartService()(),他们执行的流程是怎样的呢?如图,他们执行的流程是怎样的呢?如图所示:所示:通过观察我们得到结论,其执行流程为:通过观察我们得到结论,其执行流程为:onCreateonCreate()()onBindonBind()()onStartonStart()()8.4 使用ContentProviderContentProviderContentProvider是是AndroidAndroid中处理数据相关的一个类。中处理数据相关的一个类。ContentProviderContentProvider类实现了一组标准的接口,一个程序可类实现了一组标准的接口,一个程序可以通过实现以通过实现ContentProviderContentProvider的接口将自己的数据共享给的接口将自己的数据共享给其他程序,其他程序可以通过这些接口对数据进行查询、其他程序,其他程序可以通过这些接口对数据进行查询、插入、删除以及修改等操作。插入、删除以及修改等操作。8.5 小结本章讲解了本章讲解了AndroidAndroid应用程序的应用程序的4 4个重要组成部分:个重要组成部分:ActivityActivity、BroadcastReceiverBroadcastReceiver、ServiceService以及以及ContentProviderContentProvider。本章的重点是。本章的重点是IntentIntent以及广播的结合以及广播的结合使用。难点是使用。难点是ServiceService的生命周期的控制,尤其是两种使的生命周期的控制,尤其是两种使用方式交叉使用的时候。通过本章的学习,以后我们的应用方式交叉使用的时候。通过本章的学习,以后我们的应用程序结构就可以更丰富,不再完全局限于用程序结构就可以更丰富,不再完全局限于ActivityActivity了。了。

    注意事项

    本文(第8章 Android应用程序组成.ppt)为本站会员(qwe****56)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

    本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

    工信部备案号:黑ICP备15003705号 © 2020-2023 www.taowenge.com 淘文阁 

    收起
    展开