版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章ActivityActivity生命周期Activity的启动模式显式意图和隐式意图Activity中的数据传递✎学习目标3Activity简介重点了解掌握2Android中的任务栈Activity的四种启动模式Activity的生命周期Activity中的数据传递显式意图和隐式意图1
目录Activity入门3.1☞点击查看本小节知识架构Activity的启动模式
3.2☞点击查看本小节知识架构在Activity中使用Intent3.3☞点击查看本小节知识架构Activity中的数据传递3.4☞点击查看本小节知识架构本章小节3.5
知识架构3.1Activity入门返回目录3.1.1Activity简介3.1.3Activity的生命周期Activity的创建3.1.2案例——Activity的存活3.1.4
知识架构3.2Activity的启动模式返回目录3.2.1Android下的任务栈3.2.2Activity的四种启动模式
知识架构3.3在Activity中使用Intent返回目录3.3.1Intent介绍3.3.3案例——打开系统照相机3.3.2显式意图和隐式意图
知识架构3.4Activity中的数据传递返回目录3.4.1数据传递方式3.4.3回传数据3.4.2案例——用户注册案例——装备选择3.4.43.1
Activity入门什么是Activity?3.1.1Activity简介
3.1
Activity入门3.1.1Activity简介
Activity是Android应用程序的四大组件之一,它负责管理Android应用程序的用户界面。一个应用程序一般会包含若干个Activity,每一个Activity组件负责一个用户界面的展现。Activity展示界面Activity展示界面3.1
Activity入门3.1.1Activity简介Activity是通过调用setContentView()方法来显示指定组件的。该方法既可以接收View对象为参数,也可以接收布局文件对应的资源id为参数。Activity就像一个界面管理员,用户在界面上的操作是通过Activity来管理的,下面列举几个Activity的常用事件。onKeyDown(intkeyCode,KeyEventevent):对应按键按下事件onKeyUp(intkeyCode,KeyEventevent):对应按键松开事件onTouchEvent(MotionEventevent):对应点击屏幕事件3.1
Activity入门3.1.2Activity的创建在Android应用中,可以创建一个或多个Activity,创建步骤如下所示:1)定义一个类继承自android.app.Activity或者其子类;2)在res/layout目录中创建一个xml文件,用于创建Activity的布局;3)在AndroidManifest.xml文件中注册Activity;4)重写Activity的onCreate()方法,并在该方法中使用setContentView()
加载指定的布局文件;3.1
Activity入门3.1.3Activity的生命周期生命周期就是一个对象从创建到销毁的过程,每一个对象都有自己的生命周期。同样,Activity也具有相应的生命周期,Activity的生命周期中分为三种状态。运行状态:当Activity在屏幕的最前端时,它是可见的、有焦点的。暂停状态:Activity对用户来说仍然是可见的,但它不再拥有焦点。停止状态:当Activity完全不可见时,它就处于停止状态,但仍然保留着当前状态和成员信息。然而这些对用户来说都是不可见的。Activity从一种状态转变到另一种状态时会触发一些事件,执行一些回调方法来通知状态的变化,下面通过图例来展示。3.1
Activity入门3.1.3Activity的生命周期创建时执行可见时执行回到前台,再次可见时执行获取焦点时执行失去焦点时执行用户不可见,进入后台时执行销毁时执行3.1
Activity入门3.1.4案例——Activity的存活为了让初学者掌握Activity的生命周期,接下来通过Activity存活的案例来演示两个Activity跳转时,生命周期方法变化的过程。3.1
Activity入门
脚下留心:横竖屏切换时的生命周期当手机横竖屏切换时,Activity会销毁重建(模拟器中横竖屏切换可以使用ctrl+F11)。如果不希望在横竖屏切换时Activity被销毁重建,可以在AndroidManifest.xml文件中设置Activity的android:configChanges的属性,具体代码如下所示:android:configChanges="orientation|keyboardHidden|screenSize“如果希望某一个界面一直处于竖屏或者横屏状态,可以在清单文件中通过设置Activity的属性来完成,具体代码如下所示:竖屏:android:screenOrientation="portrait"横屏:android:screenOrientation="landscape"参考资料:/article/31833.htm3.1
Activity入门
多学一招:设置View的点击事件监听Android程序中,设置View的点击事件监听共有四种,分别是:1)在布局文件中为控件设置onClick属性指定点击方法;2)创建一个内部类实现OnClickListener接口并重写onClick()方法,
之后需要为控件设置setOnClickListener(Listenerlistener);3)主类中实现OnclickListener接口,然后重写onClick()方法;4)创建匿名内部类,即在为控件设置监听时直接创建一个
OnClickListener实例,不为该实例指定名称。3.2
Activity的启动模式3.2.1Android下的任务栈Android系统中的任务栈,类似于一个容器,用于管理所有的Activity实例。在存放Activity时,满足“先进后出(First-In/Last-Out)”的原则。从图可以看出,先加入任务栈中的Activity会处于容器下面,后加入的处于容器上面,而从任务栈中取出Activity是从最顶端先取出,最后取出的是最底端的Activity。3.2
Activity的启动模式3.2.2Activity的四种启动模式Activity的启动模式有四种,分别是standard、singleTop、singleTask和singleInstance。在AndroidManifest.xml中,可以通过<activity>标签的android:launchMode属性设置启动模式。3.2
Activity的启动模式3.2.2
Activity的四种启动模式standard标准模式standard是Activity默认的启动模式,在不指定Activity启动模式的情况下,所有Activity使用的都是standard模式。在standard模式下,每当启动一个新的Activity,它就会进入任务栈,并处于栈顶的位置,对于使用standard模式的Activity,每次启动都会创建一个新的实例。3.2
Activity的启动模式3.2.2
Activity的四种启动模式singleTop模式singleTop启动模式与standard类似,不同的是,当启动的Activity已经位于栈顶时,则直接使用它,不再创建新的实例。3.2
Activity的启动模式3.2.2
Activity的四种启动模式singleTask模式当Activity的启动模式为singleTask时,每次启动该Activity时,系统首先会检查栈中是否存在该Activity的实例,如果发现已经存在则直接使用该实例,并将当前Activity之上的所有Activity出栈,如果没有发现则创建一个新的实例。3.2
Activity的启动模式3.2.2
Activity的四种启动模式singleInstance模式singleInstance模式加载Activity时,只会创建一个Activity实例,并且会使用一个全新的任务栈来装载该Activity实例。/kf/201311/254450.html/kf/201503/380172.html3.3在Activity中使用Intent3.3.1Intent介绍Intent中文翻译为“意图”,它是Android程序中各个组件进行交互的一种重要方式,它不仅可以指定当前组件要执行的动作,还可以在不同组件之间进行数据传递。Intent一般用于启动Activity、启动服务、发送广播等,承担了Android应用程序三大核心组件相互间的通信功能。Intent启动Activity的方法有:startActivity(Intentintent)
startActivityForResult(Intentintent,intcode)
3.3在Activity中使用Intent3.3.2显式意图和隐式意图显式意图即在通过Intent启动Activity时,需明确指定激活组件的名称。如果需要在本应用中启动其他的Activity时,可以使用显式意图来启动Activity。Intentintent=newIntent(this,Activity02.class);startActivity(intent);显式意图还可以根据目标组件的包名、全路径名来指定开启组intent.setClassName("cn.itcast.xxx","cn.itcast.xxx.xxxx");startActivity(intent);3.3在Activity中使用Intent3.3.2显式意图和隐式意图隐式意图没有明确指定组件名的Intent称为隐式意图。系统会根据隐式意图中设置的动作(action)、类别(category)、数据(Uri和数据类型)找到最合适的组件。
<activityandroid:name="ent.Activity02"><intent-filter><actionandroid:name="cn.itscast.xxx"/><categoryandroid:name="ent.category.DEFAULT"/></intent-filter></activity><action>标签指明了当前Activity可以响应的动作为"cn.itscast.xxx",而<category>标签则包含了一些类别信息,只有当<action>和<category>中的内容同时匹配时,Activity才会被开启。3.3在Activity中使用Intent3.3.2显式意图和隐式意图隐式意图使用隐式意图开启Activity的示例代码如下所示:Intentintent=newIntent();//设置动作和清单文件一样intent.setAction("cn.itscast.xxx");startActivity(intent);
3.3在Activity中使用Intent3.3.3案例——打开系统照相机在实际开发中,避免不了要调用其他应用程序的组件。例如,在开发新浪微博时,需要启动系统的相机功能。接下来通过打开系统照相机的案例向大家演示如何使用隐式意图。3.4
Activity中的数据传递3.4.1数据传递方式Intent不仅可以用来开启Activity,也可以在Activity之间传递数据。在数据传递时,可以使用putExtra()方法将数据存储在Intent中。
Stringdata="HelloActivity02"Intentintent=newIntent(this,Activity02.class);intent.putExtra("extra_data",data);startActivity(intent);将数据从Activity02中取出Intentintent=getIntent();Stringdata==intent.getStringExtra("extra_data");3.4
Activity中的数据传递3.4.1数据传递方式putExtra()不仅可以传递基本类型数据,还可以传递Bundle对象。Bundlebundle=newBundle();bundle.putString("name","Linda");Intentintent=newIntent(this,Activity02.class);intent.putExtra(bundle);startActivity(intent);将数据从Activity02中取出
Intentintent=getInten
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- AI驱动的材料基因组学在活塞合金配方研发中的资本效率革命
- AIGC内容生产变革对立柱灯箱媒介估值逻辑的底层冲击
- 2026年漯河食品职业学院高职单招笔试语文试题库含答案解析2套试卷
- 2026年湖南铁路科技职业技术学院高职单招笔试化学试题库含答案解析2套试卷
- 2026年湖南有色金属职业技术学院高职单招笔试数学试题库含答案解析3套试卷
- 2026年湖北住院医师-湖北住院医师口腔修复科历年参考题库含答案解析
- 2026年淮北职业技术学院高职单招笔试数学试题库含答案解析3套试卷
- 2026年浙江警官职业学院高职单招笔试综合素质试题库含答案解析3套试卷
- 2026年浙江国际海运职业技术学院高职单招笔试物理试题库含答案解析2套试卷
- 2026年洛阳科技职业学院高职单招笔试英语试题库含答案解析3套试卷
- 中小学舞蹈社团新生招募活动计划
- 2026年秋季小学开学第一课 法治教育进校园主题班会
- 通水阶段验收鉴定书
- 工程质量与安全保证措施培训
- GA/T 900-2025城市道路施工作业交通组织规范
- 2026年秋季三年级数学上册教学计划(人教版)
- 新部编版一年级语文上全册教案
- 2026江西吉安峡江县招聘基层就业公共服务岗位工作人员2人考试备考试题及答案详解
- 2026届九年级数学中考二模B卷模拟试卷(含答案详解与评分标准)
- catia考试题目及答案多选
- 2027届新高考化学精准突破复习-电化学备考策略
评论
0/150
提交评论