




已阅读5页,还剩26页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,Android程序开发应用实例第五讲AndoridActivity组件,2,2,内容概要,3,3,本节内容,什么是Android,Activity生命周期,4,Activity生命周期特征,一个完整Activity的生命周期包括激活状态、运行状态、暂停状态、停止状态和终止状态。这些状态的特征为:激活状态:Activity的初始状态,所有的Activity必须经历这个状态运行状态:这时的Activity运行在屏幕的前台暂停状态:这时Activity失去了焦点但是仍然对用户可见。停止状态:这时Activity对用户不可见,所以其窗口会被其他Activity覆盖。终止状态:这时Activity将会被系统清理出内存,5,Activity生命周期状态转换,Activity的生命周期状态转换如下图所示:,6,Activity生命周期划分,Activity的生命周期可以根据不同的标准分为:完整生命周期onCreate()onDestroy()可见生命周期onStart()onStop()前台生命周期onResume()onPause(),7,7,本节内容,什么是Android,Activity栈管理机制,8,Android管理Activity,大多数的应用程序根据功能的需要都是由多个屏幕显示组成,因此大部分的Android应用中也就必须包含多个Activity类。Android系统使用栈来管理Activity。栈是一种先进后出的数据结构,处于顶端的元素总是被先处理。当一个新的Activity启动的时候,它首先会被放置在Activity栈顶部并成为运行状态的Activity只有当这个新的Activity退出以后,之前Activity才能重新回到前台界面。,9,Activity栈管理过程(续),当前有Activity_A、Activity_B和Activity_C三个Activity。Activity_A是当前响应用户的操作的Activity,因此处于运行状态的Activity_A被放置于栈顶,而Activity_B和Activity_C处于暂停状态。,10,Activity栈管理过程(续),当Activity_A对应的窗口被关闭时,Activity_B由暂停状态转成运行状态,这时处于运行状态的Activity_B被置于栈顶。,11,Activity栈管理过程,当接着当Activity_B对应的窗口被关闭时,Activity_C由暂停状态转成运行状态,这时处于运行状态的Activity_C被置于栈顶。,12,12,本节内容,什么是Android,解析Activity的实现,13,Activity类中的方法,android.app.Activity类提供的方法protectedvoidonCreate(Bundleicicle);protectedvoidonStart();protectedvoidonRestart();protectedvoidonResume();protectedvoidonFreeze(BundleoutIcicle)protectedvoidonPause();protectedvoidonStop();protectedvoidonDestroy();,14,创建Activity,程序开发人员可以重写android.app.Activity类的方法从而使自定义的Activity在状态改变时执行用户所期望的操作。下面创建一个名称为HelloActivity的单Activity的Android应用。,15,创建Activity的缺省代码,项目创建完成后,该类中的缺省代码如下所示:publicclassMainActivityextendsActivityOverridepublicvoidonCreate(BundlesavedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);OverridepublicbooleanonCreateOptionsMenu(Menumenu)getMenuInflater().inflate(R.menu.activity_main,menu);returntrue;,16,启动另外一个Activity,一个Activity可以启动另外一个Activity,Activity之间是通过Intent来传递消息的。举个例子说:假设你想让用户看到Internet上的某个图片。当前有一个Activity具有打开Internet上的某个图片的功能,那么“宿主Activity”只需将请求信息放到一个Intent对象里面,并把它传递给startActivity()或startActivityForResult()然后浏览器就会显示指定link的图片。而当用户按下BACK键的时候,宿主Activity又会再一次的显示在屏幕上。,17,启动Activity方式,一个Activity可以启动另外一个Activity,在这里启动的Activity被称为”宿主Activity”,被启动的Activity被称为“随从Activity”。有三种方式来启动另外一个Activity:启动同一个Application的Activity启动不同Application的Activity启动不同apk下的Activity,18,启动不同的Application下的Activity,实例5-1启动不同Application的Activity,19,启动不同APK下的Activity,这种方式(启动不同APK下的Activity)一般用来启动Android系统提供的Activity。实例5-2启动一个Android系统提供的“浏览网页”ActivitypublicclassMainActivityextendsActivitypublicvoidonCreate(BundlesavedInstanceState)super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);Uriuri=Uri.parse();Intentintent=newIntent(Intent.ACTION_VIEW,uri);startActivity(intent);,20,Activity启动模式,Android支持standard、singleTop、singleTask和singleInstance四种启动模式。可以通过AndroidManifest.xml文件中的元素的launchMode属性来配置Activity的启动模式。例如下面的语句指定“ActivityMain“这个Activity的启动模式为singleTask:,21,设置Activity许可,同API一样,Android系统开放了许多的底层应用(如ACTION_CALL)供用户调用。Android系统会在运行时检查该用户程序是否有权限调用该底层应用,这时需要设置Activity许可才能运行相应的应用。需要通过清单文件设置Activity的许可,否则程序运行出现错误。例如:,22,22,本节内容,什么是Android,Activity的消息传递,23,Activity间的消息传递,Android使用Intent(意图)在不同的Activity之间传递消息。Intent对象描述了应用中一次操作的动作、数据和附加数据,系统通过该对象的描述调用对应的应用。Intent提供了多个Activity之间进行交互的方式,应用程序可通过startActivity方法指定相应的Intent对象来启动另外一个Activity。,24,Bundle,如果要传递自定义的数据时例如将当前Activity的运行状态传递给下一个Activity,可使用Bundle来协助完成。Bundle对象可被理解成一个哈希表,该映射表建立了关键字(标识)与其值(传递的数据)的映射关系通过Bundle类的putXXX(Key,Value)方法将数据封装到Bundle对象中,如putString(Stringkey,Stringvalue)。通过Bundle的getXXX(Stringkey)方法取得关键字对应的数据。,25,使用Intent和Bundle在Activity间传递数据,“宿主Activity“端的流程1)首先创建一个Intent和Bundle对象,其中Bundle用于存储传递的数据;2)然后使用Bundle的put方法输入要传递的数据;3)将要传递的数据压入Intent中;4)启动“随从Activity“。“随从Activity“端的流程1)接收“宿主Activity“的Intent;2)传递获得传入的Bundle对象;3)使用Bundle的get方法获取要传递的数据。,26,26,本节内容,什么是Android,Activity应用,27,Activity应用(续),【实例5-4】实现Activities间的消息传递。该实例包含了两个Activity:MainActivityMainActivity通过Bundle绑定单选按钮值将当前被选中的单选按钮值传送给SupplActivity。myintent.putExtras(mybundle);/*将数据封装到Intent对象中,通过该Intent对象将数据传送给相应的Activity*/MainActivity.this.startActivity(myintent);,28,Activity应用(续),SMainActivity启动SupplActivity,并传递给SupplActivity包含RadioButton值的Intent对象,接着SupplActivity通过getIntent方法获取从MainActivity传过来Intentmyintent=this.getIntent();/获取Activity传递的IntentBundlemybundle=myintent.getExtras();/获取Intent的Bundle对象,该对象记录了传送的数据值,29,Activity应用,该程序,选中“Chinese”单选按钮,然后点击“StartSupplActivity”按钮(左图所示)。之后,会看到SupplActivity被启动,SupplActivity解析出MainActivity传递过来的值为“
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司活动月策划方案
- 公司活动礼物策划方案
- 公司组织农家乐策划方案
- 公司端午节集体活动方案
- 公司聚会吃饭活动方案
- 公司撕名牌团建活动方案
- 公司职工团体活动方案
- 公司节日自助餐活动方案
- 公司组织养老院活动方案
- 公司日常乒乓球活动方案
- 行书教程智慧树知到期末考试答案2024年
- 24春国家开放大学《知识产权法》形考任务1-4参考答案
- 健身与减脂塑型智慧树知到期末考试答案2024年
- 新汉语水平考试 HSK(四级)试题及答案
- QCT 998-2023 汽车空调滤清器 (正式版)
- 公路工程施工组织设计-技术标
- 2023年黄石市黄石港区社区工作者招聘考试真题
- 国家开放大学化工节能课程-复习资料期末复习题
- 汽车行业焊接车间工位缩写
- DB61-T 5068-2023 钢桥面改性聚氨酯混凝土铺装应用技术规程
- 基于水凝胶模板原位合成磷酸钙类骨组织修复材料及表征
评论
0/150
提交评论