




已阅读5页,还剩28页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第三章Activity,Activity生命周期Activity的启动模式显式意图和隐式意图Activity中的数据传递,学习目标,目录,Activity入门,点击查看本小节知识架构,Activity的启动模式,点击查看本小节知识架构,在Activity中使用Intent,点击查看本小节知识架构,Activity中的数据传递,点击查看本小节知识架构,本章小节,知识架构,3.1Activity入门,返回目录,3.1.1,Activity简介,3.1.3,Activity的生命周期,Activity的创建,3.1.2,案例Activity的存活,3.1.4,知识架构,3.2Activity的启动模式,返回目录,3.2.1,Android下的任务栈,3.2.2,Activity的四种启动模式,知识架构,3.3在Activity中使用Intent,返回目录,3.3.1,Intent介绍,3.3.3,案例打开系统照相机,3.3.2,显式意图和隐式意图,知识架构,3.4Activity中的数据传递,返回目录,3.4.1,数据传递方式,3.4.3,回传数据,3.4.2,案例用户注册,案例装备选择,3.4.4,3.1Activity入门,什么是Activity?,3.1.1Activity简介,3.1Activity入门,3.1.1Activity简介,Activity是Android应用程序的四大组件之一,它负责管理Android应用程序的用户界面。一个应用程序一般会包含若干个Activity,每一个Activity组件负责一个用户界面的展现。,Activity展示界面,Activity展示界面,3.1Activity入门,3.1.1Activity简介,Activity是通过调用setContentView()方法来显示指定组件的。该方法既可以接收View对象为参数,也可以接收布局文件对应的资源id为参数。Activity就像一个界面管理员,用户在界面上的操作是通过Activity来管理的,下面列举几个Activity的常用事件。onKeyDown(intkeyCode,KeyEventevent):对应按键按下事件onKeyUp(intkeyCode,KeyEventevent):对应按键松开事件onTouchEvent(MotionEventevent):对应点击屏幕事件,3.1Activity入门,3.1.2Activity的创建,在Android应用中,可以创建一个或多个Activity,创建步骤如下所示:1)定义一个类继承自android.app.Activity或者其子类;2)在res/layout目录中创建一个xml文件,用于创建Activity的布局;3)在AndroidManifest.xml文件中注册Activity;4)重写Activity的onCreate()方法,并在该方法中使用setContentView()加载指定的布局文件;,3.1Activity入门,3.1.3Activity的生命周期,生命周期就是一个对象从创建到销毁的过程,每一个对象都有自己的生命周期。同样,Activity也具有相应的生命周期,Activity的生命周期中分为三种状态。运行状态:当Activity在屏幕的最前端时,它是可见的、有焦点的。暂停状态:Activity对用户来说仍然是可见的,但它不再拥有焦点。停止状态:当Activity完全不可见时,它就处于停止状态,但仍然保留着当前状态和成员信息。然而这些对用户来说都是不可见的。,Activity从一种状态转变到另一种状态时会触发一些事件,执行一些回调方法来通知状态的变化,下面通过图例来展示。,3.1Activity入门,3.1.3Activity的生命周期,创建时执行,可见时执行,回到前台,再次可见时执行,获取焦点时执行,失去焦点时执行,用户不可见,进入后台时执行,销毁时执行,3.1Activity入门,3.1.4案例Activity的存活,为了让初学者掌握Activity的生命周期,接下来通过Activity存活的案例来演示两个Activity跳转时,生命周期方法变化的过程。,3.1Activity入门,脚下留心:横竖屏切换时的生命周期,当手机横竖屏切换时,Activity会销毁重建(模拟器中横竖屏切换可以使用ctrl+F11)。如果不希望在横竖屏切换时Activity被销毁重建,可以在AndroidManifest.xml文件中设置Activity的android:configChanges的属性,具体代码如下所示:android:configChanges=orientation|keyboardHidden|screenSize“如果希望某一个界面一直处于竖屏或者横屏状态,可以在清单文件中通过设置Activity的属性来完成,具体代码如下所示:竖屏:android:screenOrientation=portrait横屏:android:screenOrientation=landscape参考资料:,3.1Activity入门,多学一招:设置View的点击事件监听,Android程序中,设置View的点击事件监听共有四种,分别是:1)在布局文件中为控件设置onClick属性指定点击方法;2)创建一个内部类实现OnClickListener接口并重写onClick()方法,之后需要为控件设置setOnClickListener(Listenerlistener);3)主类中实现OnclickListener接口,然后重写onClick()方法;4)创建匿名内部类,即在为控件设置监听时直接创建一个OnClickListener实例,不为该实例指定名称。,3.2Activity的启动模式,3.2.1Android下的任务栈,Android系统中的任务栈,类似于一个容器,用于管理所有的Activity实例。在存放Activity时,满足“先进后出(First-In/Last-Out)”的原则。,从图可以看出,先加入任务栈中的Activity会处于容器下面,后加入的处于容器上面,而从任务栈中取出Activity是从最顶端先取出,最后取出的是最底端的Activity。,3.2Activity的启动模式,3.2.2Activity的四种启动模式,Activity的启动模式有四种,分别是standard、singleTop、singleTask和singleInstance。在AndroidManifest.xml中,可以通过标签的android:launchMode属性设置启动模式。,3.2Activity的启动模式,3.2.2Activity的四种启动模式,standard标准模式standard是Activity默认的启动模式,在不指定Activity启动模式的情况下,所有Activity使用的都是standard模式。在standard模式下,每当启动一个新的Activity,它就会进入任务栈,并处于栈顶的位置,对于使用standard模式的Activity,每次启动都会创建一个新的实例。,3.2Activity的启动模式,3.2.2Activity的四种启动模式,singleTop模式singleTop启动模式与standard类似,不同的是,当启动的Activity已经位于栈顶时,则直接使用它,不再创建新的实例。,3.2Activity的启动模式,3.2.2Activity的四种启动模式,singleTask模式当Activity的启动模式为singleTask时,每次启动该Activity时,系统首先会检查栈中是否存在该Activity的实例,如果发现已经存在则直接使用该实例,并将当前Activity之上的所有Activity出栈,如果没有发现则创建一个新的实例。,3.2Activity的启动模式,3.2.2Activity的四种启动模式,singleInstance模式singleInstance模式加载Activity时,只会创建一个Activity实例,并且会使用一个全新的任务栈来装载该Activity实例。,3.3在Activity中使用Intent,3.3.1Intent介绍,Intent中文翻译为“意图”,它是Android程序中各个组件进行交互的一种重要方式,它不仅可以指定当前组件要执行的动作,还可以在不同组件之间进行数据传递。Intent一般用于启动Activity、启动服务、发送广播等,承担了Android应用程序三大核心组件相互间的通信功能。Intent启动Activity的方法有:startActivity(Intentintent)startActivityForResult(Intentintent,intcode),3.3在Activity中使用Intent,3.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中使用Intent,3.3.2显式意图和隐式意图,隐式意图没有明确指定组件名的Intent称为隐式意图。系统会根据隐式意图中设置的动作(action)、类别(category)、数据(Uri和数据类型)找到最合适的组件。,标签指明了当前Activity可以响应的动作为cn.itscast.xxx,而标签则包含了一些类别信息,只有当和中的内容同时匹配时,Activity才会被开启。,3.3在Activity中使用Intent,3.3.2显式意图和隐式意图,隐式意图使用隐式意图开启Activity的示例代码如下所示:Intentintent=newIntent();/设置动作和清单文件一样intent.setAction(cn.itscast.xxx);startActivity(intent);,3.3在Activity中使用Intent,3.3.3案例打开系统照相机,在实际开发中,避免不了要调用其他应用程序的组件。例如,在开发新浪微博时,需要启动系统的相机功能。接下来通过打开系统照相机的案例向大家演示如何使用隐式意图。,3.4Activity中的数据传递,3.4.1数据传递方式,Intent不仅可以用来开启Activity,也可以在Activity之间传递数据。在数据传递时,可以使用putExtra()方法将数据存储在Intent中。Stringdata=HelloActivity02Intentintent=newIntent(this,Activity02.class);intent.putExtra(extra_data,data);startActivity(intent);将数据从Activity02中取出Intentintent=getIntent();Stringdata=intent.getStringExtra(extra_data);,3.4Activity中的数据传递,3.4.1数据传递方式,putExtra()不仅可以传递基本类型数据,还可以传递Bundle对象。Bundlebundle=newBundle();bundle.putString(name,Linda);Intentintent=newIntent(this,Activity02.class);intent.putExtra(bundle);startActivity(intent);将数据从Activity02中取出Intentintent=getIntent();Bundlebundle=intent.getExtras();StringstuName=bundle.getString(name);,3.4Activity中的数据传递,3.4.2案例用户注册,为了让初学者更好的掌握Activity中的数据传递,接下来通过用户注册的案例来演示Activity中的数据传递。,3.4Activity中的数据传递,3.4.3回传数据,在
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 农产品嫁接种苗技术服务合同7篇
- 2025年人防工程防护(化)设备供应及安装合同
- 转租合同安全协议书7篇
- 2025保洁工施工合同
- 2025二手车买卖合同(简化版)
- 家政服务合同
- 家居建材供应合同
- 第九课 主动的魅力说课稿-2025-2026学年小学心理健康人教版三年级上册-人教版
- 开启科学探索之旅说课稿-2025-2026学年初中物理人教版2024八年级上册-人教版2024
- 2025年第2季度护士三基考试试题及答案
- 产品品质及售后无忧服务承诺书3篇
- 2025年第11个全国近视防控宣传教育月活动课件
- 妊娠期高血压用药
- 游泳社会指导员专项理论考试复习题库汇总(附答案)
- 我不是完美小孩
- GB/T 18091-2015玻璃幕墙光热性能
- 2023年高考全国1卷理科数学和答案详解(word版本)
- 大学英语精读第三版第三册课文翻译
- 患者跌倒的预防及管理课件
- 医疗设备验收单
- 竞选大学心理委员ppt模板
评论
0/150
提交评论