《Android程序设计》一3.2 活动、意图和任务

简介: 本节书摘来自华章出版社《Android程序设计》一 书中的第3章,第3.2节,作者:G. Blake Meike, Masumi Nakamura,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.2 活动、意图和任务

Android活动既是用户交互单元(通常填满Android移动设备的整个屏幕)也是执行单元。开发交互式的Android程序时,首先要继承Activity类。活动提供了在Android应用中可重用、可交换的UI组件流。
那么,一个活动如何调用另一个活动,如何将信息传递给第二个活动呢?不同活动之间的基本通信单元是Intent类。Intent类是一个抽象的功能描述,用来定义一个活动要求另一个活动执行的功能,类似于是第二个活动提供的功能的一张照片。Intent类是构建松散耦合的系统的基础,它支持一个活动启动另一个活动。应用发布Intent时,可能已经有几个不同的已注册的活动都能实现这个功能。在本书第1章中为验证Android SDK是否正确安装而创建test应用的过程中,我们已经“编写”过了和活动相关的代码。下面再一起来看看这段代码:
screenshot

当系统启动这个活动时,它会首先调用Activity的子类TestActivity的构造函数,然后调用Activity的onCreate方法。这会加载并显示在main.xml文件中定义的视图结构(view hierarchy)。onCreate方法则开启了Activity的生命周期,这在第11章会详细
说明。
Activity类是Android系统中最重要的类之一,支持应用的模块化及功能共享。Activity会和Android运行时交互,以实现应用生命周期的关键部分。每个活动可以使用类Context独立配置。
在绝大多数情况下,一个Android应用中的每个活动都是独立于其他的活动的。一个活动不会在代码中直接调用另一个活动的方法。Android框架中的另外一个元素(Intent)负责通信。因此,不建议引用活动对象。Android运行时环境负责创建并管理应用的活动及其他各种组件,回收它们所使用的内存,以确保每个任务占用的内存相对较少。你会发现专门对活动内存进行管理时,效率反而会非常低。
注意: 和用object来表示类的实例很相似,我们使用活动来表示类Activity的实例。
在Android中的用户界面流控制,不是基于方法调用的。在其所采用的机制中,应用使用Intent描述清楚它想要的功能,系统负责找出一个匹配的实现。Android的Home桌面就是使用这些描述来启动应用的,每个应用也可以按照自己的意愿使用自己喜欢的意图来实现这种桌面功能。Android开发人员将这种结果流称为“任务”(task):跨越多个应用的一组活动,而且实际上是多个进程。图3-3显示了跨越三个应用并涉及了多个活动的一个任务(表3-1给出的例子)。组成该任务的活动链跨越了三个独立的进程和堆,它们可以相互独立存在,其他应用也可能会为同一个活动子类另外创建
实例。
screenshot

相关文章
|
6月前
|
Java 数据库 Android开发
【专栏】Kotlin在Android开发中的多线程优化,包括线程池、协程的使用,任务分解、避免阻塞操作以及资源管理
【4月更文挑战第27天】本文探讨了Kotlin在Android开发中的多线程优化,包括线程池、协程的使用,任务分解、避免阻塞操作以及资源管理。通过案例分析展示了网络请求、图像处理和数据库操作的优化实践。同时,文章指出并发编程的挑战,如性能评估、调试及兼容性问题,并强调了多线程优化对提升应用性能的重要性。开发者应持续学习和探索新的优化策略,以适应移动应用市场的竞争需求。
156 5
|
测试技术 数据库 Android开发
0008Java安卓程序设计-ssm基于Android平台的健康管理系统
0008Java安卓程序设计-ssm基于Android平台的健康管理系统
56 0
|
Java 数据库 Android开发
0007Java安卓程序设计-ssm基于Android的校园新闻管理系统
0007Java安卓程序设计-ssm基于Android的校园新闻管理系统
67 0
|
关系型数据库 MySQL Android开发
0006Java安卓程序设计-ssm基于Android的校园二手商品交易平台1
0006Java安卓程序设计-ssm基于Android的校园二手商品交易平台
84 0
|
Java 应用服务中间件 数据库
0004Java安卓程序设计-springboot基于APP的鲜花商城
0004Java安卓程序设计-springboot基于APP的鲜花商城
95 0
|
开发工具 数据库 Android开发
0001Java安卓程序设计-基于Android多餐厅点餐桌号后厨前台服务设计与开发2
0001Java安卓程序设计-基于Android多餐厅点餐桌号后厨前台服务设计与开发
59 0
|
Java 数据库 Android开发
0003Java安卓程序设计-springboot基于Android的学习生活交流APP
0003Java安卓程序设计-springboot基于Android的学习生活交流APP
64 0
|
Java 关系型数据库 MySQL
0002Java安卓程序设计-基于Uniapp+springboot菜谱美食饮食健康管理App2
0002Java安卓程序设计-基于Uniapp+springboot菜谱美食饮食健康管理App
72 0
|
Shell Android开发 容器
你真了解Android任务栈 Task 与启动模式吗?
你真了解Android任务栈 Task 与启动模式吗?
124 0
|
6月前
|
XML Java Android开发
Android Studio App开发之捕获屏幕的变更事件实战(包括竖屏与横屏切换,回到桌面与切换到任务列表)
Android Studio App开发之捕获屏幕的变更事件实战(包括竖屏与横屏切换,回到桌面与切换到任务列表)
194 0
下一篇
无影云桌面