版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
目录Activity简介Activity的四种状态Activity生命周期Intent
BundleActivity传值与返回本章小结一、Activity简介Android程序是由Activity、Service、ContentProvider和BroadcastReceiver等组件组成,其中Activity是最基本也是最为常用的组件。Activity中所有操作都是与用户密切相关的,它负责与用户进行直接交互,通过使用setContentView(View)来显示具体内容。二、Activity的四种状态
Running状态:当一个Activity启动后,它将在屏幕最前端,处于栈的最顶端,此时它可以看见也可以获得焦点,可以接受用户输入等。如右图7-1所示为Acitivity的一个Running状态。图7-1Activity的Running状态二、Activity的四种状态Paused状态:当Activity被另外一个透明的Activity、Toast和AlertDialog等覆盖时就处于暂停状态,此时它保留着所有的状态和成员信息,并且保持和窗口管理器的连接。如右图7-2所示为Acivity的一个Paused状态。图7-2Activity的Paused状态二、Activity的四种状态Stopped状态:当完全被另一个Activity遮挡时就处于停止状态,它仍然保留着所有的状态和成员信息。只是对用户不可见,当其他地方需要内存时它往往被系统杀掉。Killed状态:Activity尚未被启动、已经被手动终止,或已经被系统回收时处于非活动的状态,此时它被移除出Activity栈中,需要重新启动才可以使用。二、Activity的四种状态三、Activity生命周期
所有继承自Activity的类都会重写onCreate()方法,程序运行会自动运行此方法。在Activity类中还有onStart()、onPause()、onResume()、onRestart()、onDestroy()等方法,这些方法的先后执行构成Activity一个完整的生命周期。如图7-3所示。图7-3生命周期案例三、Activity生命周期【例7.1】在Android应用程序中,创建A与B两个Activity,说明从A跳转到B以及从B返回到A过程中Activity生命周期各个方法调用情况。【说明】
(1)运行项目后,先启动A这个Activity,依次调用的方法如下:
onCreate(A)→onStart(A)→onResume(A)
(2)在A不关闭的情况下跳转到B,依次调用的方法如下:
onPause(A)→onCreate(B)→onStart(B)→onResume(B)→onStop(A)
(3)按“返回”键返回到A,依次调用的方法如下:
onPause(B)→onRestart(A)→onStart(A)→onResume(A)→onStop(B)→onDestory(B)
(4)按“退出应用程序”按钮,依次调用的方法如下:
onPause(A)→onStop(A)→onDestory(A)
Activity的生命周期图如右图7-4所示:图7-4Activity的生命周期生命周期方法说明如表7-1所示:方法说明下一个OnCreate()创建activity时调用,这里是做所有初始化的地方。onStart()onStart()当activity变为在屏幕上对用户可见时调用。onResume()或onStop()onPause()当系统将要启动另外一个activity时调用。onResume()或onStop()onResume()当activity开始与用户交互时调用。onPause()onStop()当activity被停止并转为不可见时调用。onRestart()或onDestory()onRestart()当重新启动activity时调用。onStart()onDestory()当activity被销毁时调用。无表7-1生命周期方法说明四、Intent
Intent的中文意思是目的、意图、意向,在Android中提供了Intent机制来协助处理应用程序间和应用程序内部的交互与通信。Android应用程序的三个核心组件Activity、Service、BroadcastReceiver都是通过Intent来激活的。一个Intent对象其实质就是一堆信息的捆绑。它包括接收这个Intent对象组件感兴趣的信息,如将要执行的动作和操作的数据等。因此,可以将Intent理解为不同组件之间通信的“媒介”,专门提供组件间互相调用的相关信息。
四、Intent
Intent由以下各个组成部分:1、Component(组件)Component属性明确指定Intent的目标组件的类名称,若Component这个属性有指定的话,将直接使用它指定的组件。若没有指定,将要在AndroidManifest.xml文件中,使用intent-filter查找与该Intent最合适的组件。四、Intent
Component属性的案例如下:
1Intentintent=newIntent();//创建一个意图对象
2//创建组件,通过组件来响应
3ComponentNamecomponent=newComponentName(FirstActivity.this,SecondActivity.class);
4intent.setComponent(component);
5startActivity(intent);
简洁写法如下:
1Intentintent=newIntent();
2intent.setClass(FirstActivity.this,SecondActivity.class);
3startActivity(intent);
最简结写法如下:
1Intentintent=newIntent(FirstActivity.this,SecondActivity.class);
2startActivity(intent);
四、Intent2.Action(动作)在日常生活中,当我们有意愿时,会有一个动词在其中。例如我想“做”作业、我要“听”音乐等。在Intent中Action就是描述做、听等动作的,在指明一个Action时,执行者将会按照此动作的指示,接收相关输入,表现出对应的行为,产生相应的输出。Action是一个被执行的动作字符串,用于描述一个Android应用程序组件,一个Intent可以包含多个Action。在AndroidManifest.xml的Activity定义中,有一个<intent-filter>结点指定一个Action列表用于标识Activity所能接收的“动作”。
2.Action(动作)
常量目标组件动作说明ACTION_BATTERY_LOWBroadcastReceiver提示电池电量过低ACTION_HEADSET_PLUGBroadcastReceiver耳机拔出ACTION_LOCALE_CHANGEDBroadcastReceiver位置改变ACTION_SCREEN_OFFBroadcastReceiver屏幕已关闭ACTION_CREATE_SHORTCUTActivity创建快捷方式ACTION_MAINActivity指定当前应用程序的入口ACTION.CALLActivity呼叫指定的电话号码ACTION_EDITActivity指定数据给用户进行编辑表7-2常用的动作常量说明3.category(类别)
Category用来表现动作的类别,它是Action中要执行的动作的附加描述,可以将多个类别描述放到一个Intent对象中。常用的类别常量说明如表7-3所示:常量说明CATEGORY_DEFAULT设置这个种类来让组件成为IntentFilter中定义的data的默认动作。这对使用显式Intent启动的Activity是必要的。CATEGORY_BROWSABLE指定该Activity能被浏览器安全调用CATEGORY_HOME设置该Activity随系统启动而运行CATEGORY_LAUNCHERActivity显示顶级程序列表中CATEGORY_PREFERENCE该Activity是参数面板表7-3类别常量说明4.Data(数据)
Data表示与动作要操纵的数据,Data属性是Android要访问的数据,和action、Category声明方式相同,也是在<intent-filter>中。Data是用一个URI对象来表示的,URI代表数据的地址,属于一种标识符。通常情况下,我们使用action+data属性的组合来描述一个意图。四、Intent4.Data(数据)
通常情况下,我们使用Action+Data属性的组合来描述一个意图。
例如打开指定网页:
1Intentintent=newIntent();
2intent.setAction(Intent.ACTION_VIEW);
3Uridata=Uri.parse("");
4intent.setData(data);
5startActivity(intent);
5.extras(扩展信息)Extras属性主要用于传递目标组件所需要的额外的数据。通过putExtras()方法设置。6.Flags(标志)Flags是各种类型的标志,许多标志用来指定Android系统以哪个方式去加载一个Activity。Intent可以分成显式和隐式两类。显式Intent通过组件名称来指定目标组件。四、IntentIntent可以分成显式和隐式两类。显式Intent通过组件名称来指定目标组件。由于其他应用程序的组件名称对于开发人员来说通常是未知的,所以显式Intent通常用于应用程序内部消息处理。例如一个Activity启动Service或其他Activity。隐式Intent不指定组件名称,通常用于激活其他应用程序中的组件。隐式Intent处理机制是将Android中Intent请求内容与应用程序AndroidManifest.xml文件中的IntentFilter的过滤器比较,IntentFilter包含系统中所有可能的供选择组件。如果IntentFilter中某一个组件匹配隐式Intent请求时,那么Android就选择该组件作为隐式Intent的目标组件。
四、Intent
根据书本例7-2所知,通过使用Intent的setAction()方法来完成隐式意图从一个应用程序跳转到另一个应用程序。
四、Intent通过使用Intent的setClass()方法来完成显式意图跳转。
五、Bundle在Activity生命周期中,很多地方都使用Bundle对象来保存数据。Bundle类所携带的数据类似于Map,用于存放Key-Value(键-值对)形式的值。通过Bundle类强大的数据封装能力,把将要传递的数据使用Intent对象来传递到不同的Activity中,然后再进行数据拆解。Bundle类来自于android.os.Bundle类,每个Android应用程序中都要用到Bundle类,所以在代码开始的地方都使用“importandroid.os.Bundle;”这样的语句。
五、Bundle
Bundle类常用方法说明如表7-4所示:方法说明voidclear()从捆绑的映射中移除所有元素StringgetString(Stringkey)返回指定键所映射的值booleanisEmpty()判断Bundle对象中是否有任何键值映射关系voidputString(Stringkey,Stringvalue)给指定的键关联一个指定的String类型值voidremove(Stringkey)删除Bundle对象中存在的该键的映射关系表7-4Bundle类常用方法六、Activity传值与返回如果想通过一个ActivityA启动ActivityB,并希望ActivityA能从ActivityB得到一些返回值,就需要以下三个步骤:(1)在ActivityA中使用
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 猫腻作品《间客》经典语录
- 基本体操教案
- 光学分析仪器账务处理实例-记账实操
- 弱电施工技术交底
- 2024年药物控释材料项目综合评估报告
- 2019湘美版 高中美术 选择性必修5 工艺《第一单元 工艺概述》大单元整体教学设计2020课标
- 2024届河北省张家口市重点中学高三第二学期月考试卷(二)数学试题
- 2024届广东省珠海三中高三第二次五校联考数学试题
- 材料合同书样本简单
- 老人摔跤应急处置
- 《霸王别姬》赏析课件
- 《中级微观经济学》考试复习题库(附答案)
- 主题班会:明辨是非
- 《出塞》优秀课件
- 诗词大会训练题库(九宫格)课件
- 食堂餐饮意见征求表
- 影响气候的主要因素复习教学课件
- 《机械制图》校本教材-制图基本知识与技能
- 安全生产事故管理台账
- 河南省重点研发与推广专项(科技攻关)项目申请书(参考模板)
- 呼吸重症医学学习班主持稿
评论
0/150
提交评论