




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二章 从先看到的入手- 探究活动 Activity 广东药科大学 数字媒体技术系 GDPUDM 活动介绍 活动基本用法 Intent在活动间传递 活动的生命周期 活动启动模式 活动的最佳实践 目录 广东药科大学 数字媒体技术系 GDPUDM 活动是最容易吸引用户的地方,它是一种可以包含用户界面的组件, 主要用于和用户进行交互。 2.1 活动是什么 广东药科大学 数字媒体技术系 GDPUDM 创建空活动 1.新建活动时选择Add No Activity 2.2 活动的基本用法 广东药科大学 数字媒体技术系 GDPUDM 2. 2.新建新建EmptyActivityEmptyActivity 广
2、东药科大学 数字媒体技术系 GDPUDM FirstActivity 广东药科大学 数字媒体技术系 GDPUDM 前面我们说过,Android程序的设计讲究逻辑与视图分离,最好 每一个活动都能对应一个布局。 布局就是用来显示界面内容的,因此我们现在就手动创建一个布 局文件。 创建和加载布局创建和加载布局 广东药科大学 数字媒体技术系 GDPUDM 1.在res目录下新建一个layout目录 2.右键新建一个Layout resource file 广东药科大学 数字媒体技术系 GDPUDM 布局编辑器 广东药科大学 数字媒体技术系 GDPUDM 4. 4.添加按钮查看效果添加按钮查看效果 广东
3、药科大学 数字媒体技术系 GDPUDM 效果展示 广东药科大学 数字媒体技术系 GDPUDM 活动中加载这个布局 id R.layout.first_layout 广东药科大学 数字媒体技术系 GDPUDM 2.2.3 在AndroidManifest中注册Activity 广东药科大学 数字媒体技术系 GDPUDM 启动Activity LAUCHER 广东药科大学 数字媒体技术系 GDPUDM Toast是一种Android系统提供的非常好的提醒方式,在程序中可 以使用它将一些短小的信息通知给用户,这些消息会在一段时间后 自动消失,并且不占用任何屏幕空间. 2.2.4 在活动中使用Toas
4、t 广东药科大学 数字媒体技术系 GDPUDM 技巧:使用ALT+Enter自动导入单个包 android.widget.Button 点击按钮弹出Toast import import android.widget.Button; import import android.widget.Button; 广东药科大学 数字媒体技术系 GDPUDM 1. 建立menu目录,建立menu文件 2. 建立菜单项 2.2.5 2.2.5 在活动中使用在活动中使用MenuMenu 广东药科大学 数字媒体技术系 GDPUDM 显示菜单 广东药科大学 数字媒体技术系 GDPUDM 重写onOptionsI
5、temSelected方法 响应菜单事件 广东药科大学 数字媒体技术系 GDPUDM 广东药科大学 数字媒体技术系 GDPUDM 1. 按下手机的back键 2. 自己定义,调用finish()方法 销毁一个活动 广东药科大学 数字媒体技术系 GDPUDM 只有一个活动的应用也太简单了吧?没错,你的追求应该更高一 点。不管你想创建多少个活动,方法都和上一节中介绍的是一样 的。唯一的问题在于,你在启动器中点击应用的图标只会进入到 该应用的主活动,那么怎样才能由主活动跳转到其他活动呢?我 们现在就来一起看一看。 2.3 使用Intent (意图)在活动之间穿梭 广东药科大学 数字媒体技术系 GDP
6、UDM 1. 新建SecondActivity 2. 新建一个second_layout.xml,不勾选Launcher Activity 2.3.1 使用显式Intent 广东药科大学 数字媒体技术系 GDPUDM second_layout.xml 广东药科大学 数字媒体技术系 GDPUDM 3. 注册Acticity,AS自动完成了 广东药科大学 数字媒体技术系 GDPUDM Intent是Android程序中各组件之间进行交互的一种重要方式, 它不仅可以指明当前组件想要执行的动作,还可以在不同组件之 间传递数据。 Intent一般可被用于启动活动、启动服务、以及发送广播等场景 Inte
7、nt的用法大致可以分为两种,显式Intent和隐式Intent 启动Acitivity - Intent 广东药科大学 数字媒体技术系 GDPUDM Intent有多个构造函数的重载, 其中一个是Intent(Context packageContext, Class cls)。 这个构造函数接收两个参数,第一个参数Context要求提供一个 启动活动的上下文,第二个参数Class则是指定想要启动的目标活 动,通过这个构造函数就可以构建出Intent的“意图”。 然后我们应该怎么使用这个Intent呢?Activity类中提供了一个 startActivity()方法,这个方法是专门用于启动活
8、动的,它接收一 个Intent参数,这里我们将构建好的Intent传入startActivity()方 法就可以启动目标活动了。 显式Intent参数 广东药科大学 数字媒体技术系 GDPUDM 修改FirstAcitivt按钮事件,单击时启动 SecondActivity 广东药科大学 数字媒体技术系 GDPUDM 相比于显式Intent,隐式Intent则含蓄了许多,它并不明确指出 我们想要启动哪一个活动,而是指定了一系列更为抽象的action 和category等信息,然后交由系统去分析这个Intent,并帮我们 找出合适的活动去启动。 什么叫做合适的活动呢?简单来说就是可以响应我们这个
9、隐式 Intent的活动。 2.3.2 使用隐式Intent 广东药科大学 数字媒体技术系 GDPUDM 修改AndroidManifest.xml 在标签中我们指明了当前活动可以响应 com.example.activitytest.ACTION_ START这个action, 而标签则包含了一些附加信息,更精确地指明了当 前的活动能够响应的Intent中还可能带有的category。只有 和中的内容同时能够匹配上Intent中指定 的action和category时,这个活动才能响应该Intent。 SecondActivity 隐式的Intent 广东药科大学 数字媒体技术系 GDPUD
10、M 直接使用action的字符串,startActivity会自动添加category到 Intent FirstActivity事件处理 广东药科大学 数字媒体技术系 GDPUDM 每个Intent中只能指定一个action,但却能指定多个category。 目前我们的Intent中只有一个默认的category,那么现在再来增 加一个吧。,这段代码会崩溃。为什么? 多个category 广东药科大学 数字媒体技术系 GDPUDM 修订bug 广东药科大学 数字媒体技术系 GDPUDM 应用程序中需要展示一个网页 2.3.3 更多隐式Intent用法 广东药科大学 数字媒体技术系 GDPUD
11、M 1. android:scheme 用于指定数据的协议部分,如上例中的http部分。 2. android:host 用于指定数据的主机名部分,如上例中的部分。 3. android:port 用于指定数据的端口部分,一般紧随在主机名之后。 4. android:path 用于指定主机名和端口之后的部分,如一段网址中跟在域名之后的内容。 5. android:mimeType 用于指定可以处理的数据类型,允许使用通配符的方式进行指定。 标签中主要可以配置以下内容。 广东药科大学 数字媒体技术系 GDPUDM 新建third_layout.xml布局文件 广东药科大学 数字媒体技术系 GDP
12、UDM 新建活动ThirdActivity继承自Activity,代码 如下: 广东药科大学 数字媒体技术系 GDPUDM 最后在AndroidManifest.xml中为ThirdActivity 进行注册。 广东药科大学 数字媒体技术系 GDPUDM 广东药科大学 数字媒体技术系 GDPUDM 除了http协议外,我们还可以指定很多其他协议,比如geo表示 显示地理位置、tel表示拨打电话。下面的代码展示了如何在我们 的程序中调用系统拨号界面。 Intent其他用法 广东药科大学 数字媒体技术系 GDPUDM 启动活动时传递数据的思路很简单,Intent中提供了一系列 putExtra()
13、方法的重载,可以把我们想要传递的数据暂存在 Intent中,启动了另一个活动后,只需要把这些数据再从Intent 中取出就可以了。 2.3.4 向下一个活动传递数据 广东药科大学 数字媒体技术系 GDPUDM 比如说FirstActivity中有一个字符串,现在想把这个字符串传递 到SecondActivity中,你就可以这样编写: putExtra FirstActivity 广东药科大学 数字媒体技术系 GDPUDM getXXXExtra SecondActivity 广东药科大学 数字媒体技术系 GDPUDM Activity中还有一个startActivityForResult()方
14、法也是用于启动活 动的,但这个方法期望在活动销毁的时候能够返回一个结果给上 一个活动。 startActivityForResult()方法接收两个参数, 第一个参数还是Intent, 第二个参数是请求码,用于在之后的回调中判断数据的来源。 2.3.5 返回数据给上一个活动 广东药科大学 数字媒体技术系 GDPUDM FirstActivity 事件处理 广东药科大学 数字媒体技术系 GDPUDM SecondActivity事件 setResult()方法接收两个参数,第一 个参数用于向上一个活动返回处理结 果,一般只使用RESULT_OK或 RESULT_CANCELED这两个值,第 二个
15、参数则是把带有数据的Intent传递 回去, 广东药科大学 数字媒体技术系 GDPUDM 由于我们是使用startActivityForResult()方法来启动 SecondActivity的,在SecondActivity被销毁之后会回调上一个 活动的onActivityResult()方法,因此我们需要在FirstActivity中 重写这个方法来得到返回的数据,如下所示: 返回数据处理 广东药科大学 数字媒体技术系 GDPUDM 我们可以通过重写SecondActivity的onBackPressed()方法来解 决这个问题,代码如下所示: Back按键处理一样的传递数据 广东药科大学
16、 数字媒体技术系 GDPUDM 非常重要的概念 2.4 活动的生命周期 广东药科大学 数字媒体技术系 GDPUDM 其实Android是使用任务(Task)来管理活动的,一个任务就是 一组存放在栈里的活动的集合,这个栈也被称作返回栈(Back Stack)。 2.4.1 2.4.1 返回栈返回栈 广东药科大学 数字媒体技术系 GDPUDM 活动的入栈出栈 广东药科大学 数字媒体技术系 GDPUDM 1. 运行状态 2. 暂停状态 3. 停止状态 4. 销毁状态 2.4.2 2.4.2 活动状态活动状态 广东药科大学 数字媒体技术系 GDPUDM Activity类中定义了七个回调方法,覆盖了活
17、动生命周期的每一个环节, 下面我来一一介绍下这七个方法。 1. onCreate() 这个方法你已经看到过很多次了,每个活动中我们都重写了这个方法, 它会在活动第一次被创建的时候调用。你应该在这个方法中完成活动 的初始化操作,比如说加载布局、绑定事件等。 2. onStart() 这个方法在活动由不可见变为可见的时候调用。 3. onResume() 这个方法在活动准备好和用户进行交互的时候调用。此时的活动一定 位于返回栈的栈顶,并且处于运行状态。 2.4.3 2.4.3 活动的生存期活动的生存期 广东药科大学 数字媒体技术系 GDPUDM 4. onPause() 这个方法在系统准备去启动或
18、者恢复另一个活动的时候调用。我们通 常会在这个方法中将一些消耗CPU的资源释放掉,以及保存一些关键 数据,但这个方法的执行速度一定要快,不然会影响到新的栈顶活动 的使用。 5. onStop()这个方法在活动完全不可见的时候调用。它和onPause() 方法的主要区别在于,如果启动的新活动是一个对话框式的活动,那 么onPause()方法会得到执行,而onStop()方法并不会执行。 6. onDestroy()这个方法在活动被销毁之前调用,之后活动的状态将 变为销毁状态。 7. onRestart()这个方法在活动由停止状态变为运行状态之前调用,也 就是活动被重新启动了。 广东药科大学 数字
19、媒体技术系 GDPUDM 1. 完整生存期 活动在onCreate()方法和onDestroy()方法之间所经历的,就是完整生存期。 一般情况下,一个活动会在onCreate()方法中完成各种初始化操作,而在 onDestroy()方法中完成释放内存的操作。 2. 可见生存期 活动在onStart()方法和onStop()方法之间所经历的,就是可见生存期。在 可见生存期内,活动对于用户总是可见的,即便有可能无法和用户进行交互。 我们可以通过这两个方法,合理地管理那些对用户可见的资源。比如在 onStart()方法中对资源进行加载,而在onStop()方法中对资源进行释放, 从而保证处于停止状态
20、的活动不会占用过多内存。 3. 前台生存期 活动在onResume()方法和onPause()方法之间所经历的,就是前台生存期。 在前台生存期内,活动总是处于运行状态的,此时的活动是可以和用户进行 相互的,我们平时看到和接触最多的也这个状态下的活动。 广东药科大学 数字媒体技术系 GDPUDM 广东药科大学 数字媒体技术系 GDPUDM 主界面两个按钮分别启动NormalActivity和DialogActivity 使用Activity的四个步骤 1.Activity定义 2.layout定义 3.注册Activity 4.启动Activity 2.4.4 2.4.4 体验活动的生命周期体验
21、活动的生命周期 广东药科大学 数字媒体技术系 GDPUDM Normal的activity 和layout 广东药科大学 数字媒体技术系 GDPUDM Dialog 的activity 和layout 广东药科大学 数字媒体技术系 GDPUDM 注册Activity 广东药科大学 数字媒体技术系 GDPUDM 启动Activity 广东药科大学 数字媒体技术系 GDPUDM 重写活动周期方法 广东药科大学 数字媒体技术系 GDPUDM onSaveInstanceState()方法会携带一个Bundle类型的参数, Bundle提供了一系列的方法用于保存数据,比如可以使用 putString(
22、)方法保存字符串,使用putInt()方法保存整型数据, 以此类推。每个保存方法需要传入两个参数,第一个参数是键, 用于后面从Bundle中取值,第二个参数是真正要保存的内容。 MainActivity中重写onSaveInstanceState()方法 2.4.5 2.4.5 活动被回收了怎么办活动被回收了怎么办 保存数据保存数据 广东药科大学 数字媒体技术系 GDPUDM 取出数据 广东药科大学 数字媒体技术系 GDPUDM 启动模式一共有四种,分别是standard、singleTop、 singleTask和singleInstance,可以在AndroidManifest.xml中
23、通过给标签指定Android:launchMode属性来选择启 动模式。 2.5 2.5 活动的启动模式活动的启动模式 广东药科大学 数字媒体技术系 GDPUDM standard是活动默认的启动模式,在不进行显式指定的情况下, 所有活动都会自动使用这种启动模式。 2.5.1 standard2.5.1 standard 广东药科大学 数字媒体技术系 GDPUDM 3个FirstAcitivity实例 在FirstActivity的基础上启动FirstActivity 广东药科大学 数字媒体技术系 GDPUDM 当活动的启动模式指定为singleTop,在启动活动时如果发现返 回栈的栈顶已经是
24、该活动,则认为可以直接使用它,不会再创建 新的活动实例。 2.5.2 2.5.2 singleTopsingleTop 广东药科大学 数字媒体技术系 GDPUDM SingleTop 广东药科大学 数字媒体技术系 GDPUDM 如果是另外的Activity启动它,则会有多个Activity实例 SingleTop 广东药科大学 数字媒体技术系 GDPUDM 当活动的启动模式指定为singleTask,每次启动该活动时系统首 先会在返回栈中检查是否存在该活动的实例,如果发现已经存在 则直接使用该实例,并把在这个活动之上的所有活动统统出栈, 如果没有发现就会创建一个新的活动实例。 2.5.3 2.
25、5.3 singleTasksingleTask 广东药科大学 数字媒体技术系 GDPUDM SingleTask 广东药科大学 数字媒体技术系 GDPUDM SingleTask,只保留一个Activity 广东药科大学 数字媒体技术系 GDPUDM 不同于以上三种启动模式,指定为singleInstance模式的活动会 启用一个新的返回栈来管理这个活动(其实如果singleTask模式 指定了不同的taskAffinity,也会启动一个新的返回栈)。 2.5.4 2.5.4 singleInstancesingleInstance 广东药科大学 数字媒体技术系 GDPUDM singleInstancesingleInstance 广东药科大
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 特检科出科考试题及答案
- c语言二级等级考试试题及答案
- 浙江省杭州市文澜中学2026届九年级化学第一学期期中经典模拟试题含解析
- 天气动力学考试题及答案
- 2026届江苏省仪征市古井中学九年级化学第一学期期中质量检测试题含解析
- 课件上传后不显示问题解决
- 山西省朔州市右玉县2026届九年级化学第一学期期中调研模拟试题含解析
- 滴滴代驾安全知识培训课件
- 2026届浙江杭州西湖区四校联考化学九上期中调研模拟试题含解析
- 课件《鱼游到纸上来了》
- 拍摄肖像授权协议书
- 叶轮逆向设计方法与流程
- 《畜禽环境卫生》第一章-环境与畜禽的关系
- 《医疗的人文关怀》课件
- 非盗抢汽车合同协议
- 爱国卫生运动主题班会课件
- 染织工艺知识培训课件
- 全屋定制家具安装规范
- 公路应急抢修合同标准文本
- 教师在线教学能力提升学习总结
- 交通安全培训(摩托车电动车)
评论
0/150
提交评论