Applications
一个
Android应用程序其实就是由一个或者多个
Activity组成。它们被捆绑在一起并存放进
.apk文件中,这就是
Android应用程序。
Android中有着丰富的应用程序,比如邮件、日历、地图定位、文本消息、联系人、照相机、打电话、音乐播放器,系统设置等应用。
一般情况下,桌面上都会有
Android应用程序快捷图标,用户可以选择某一个图标来启动应用程序。
Activities
Activity是
Android应用程序的主要组成部分,
activity可以是你自己创建的,当然,还可以是其它应用程序中的
activity。它们都是在运行时绑定上的,以便于应用程序扩展其自身的功能,它们一旦组合在一起,就会如同一个应用程序一样。每个
activity都有其独特的
UI、明确的功能,诸如打电话、看照片、听音乐等。任何一个应用程序都应至少有一个
activity。
当使用
Android手机时,用户在屏幕上一个接一个地滑动或是点击图标启动
activity,完全不会注意到底层的行为——他们体验是无缝的。
activity后面有
activity,
task后面还会有
task。
Activity
可以处理特定的数据类型和接受一相关的动作。每个
activity都有其各自的生命周期,互不干扰;并且它们都可以被用户或者系统独立启动、运行、暂停、恢复运行、停止、重新开始。正因为这个独立性,
activity可以以不同的方式被其它的
activity进行替换。
ORACLE EBS 价目表的导入功能-存储过程BUG
比如打电话的应用程序就包含了四个
activity:打电话、联系人列表、查看联系人、添加联系人,如下图:




打电话
联系人列表
查看联系人
添加联系人
下面的应用程序同样也包含了很多
activity:
*
邮件
- 查看文件夹、邮件列表、邮件,发送邮件和设置邮件账号。
*
日历
- 查看天、星期、月、议程,编辑事件、首选项。
*
照相机
- 运行照相机、查看图片列表、图片,编辑图片,运行录像机,查看录像列表和录像。
*
游戏
- 玩游戏和安装游戏。
*
地图
- 查看地图上的位置,查看朋友的位置以及他们的详细信息(朋友的位置、状态、照片)。
Activity是
Android应用中最为突出的组件,其余组件分别为:
service、
content provider、
broadcast receiver。更多
activities的详情,参见
Application Components。
Activity Stack
用户之所以能够从一个
activity转到下一个
activity,是因为
Android系统针对
activity而设计了一个线性的导航历史以供用户追溯访问,这就是
activity栈,也称为
back stack。当用户启动了一个新的
activity,它就被添加进
activity栈,以便按
BACK键时能够返回到上一个
activity。然而,用户不能按
BACK键就直接返回到桌面(除非
activity的前一个是桌面才可以)。
activity
栈里面存放的只能是
activity,而视图、窗体、菜单和对话框则不能。也就是说,如果你可以让用户从屏幕
A跳转到屏幕
B,当用户按
BACK键时,他就应该会回到屏幕
A,那屏幕
A必须是一个
activity。有个例外情况就是,你的应用程序需要利用
BACK键控制自身的导航,那就要自己重新设定
BACK键的导航功能。
Tasks
任务则是一系列的
activity集合,它能使用户完成既定的操作,而又不用去关心这些
activity是哪个应用程序里面的,除明确指定一个新任务之外(参见“中断任务”小段),那么其他
activity都属于当前任务的一部分。再次注意的是,这些
activity可是任意应用程序中的其中一个,也就是说不管它们所属的应用程序是否相同。举个例子,用户打开了联系人的程序,任务随之也会启动,他选择了
email地址准备发邮件,这时跳转到了
email activity,之后他要添加附件,需要在画廊中挑选图片。这里面,联系人,
email,图片画廊都是不同的应用程序。
当一个
activity启动时,任务也随之启动的话,那个
activity就是根
activity。启动
activity一般有这么几种方式,应用程序发射器、桌面快捷方式、最近任务切换器。
Android系统内部一旦有任务,那么按
BACK键就可以回到上一个
activity。
Activity栈可以是多个任务的组成部分。
下面是关于任务的例子,以供参考:
*
发送文本消息并含有附件
*
观看
YouTube视频并以邮件的方式向其他人分享。
中断任务
——任务中有一个重要特性就是能使用户中断当前正在做的操作(他们的任务)而去执行其它操作,当然他们也可以回到之前的任务上,也就是说支持同时运行多任务并且来回切换它们。
这里有两种情况来开始其它任务,并且都可以返回到原先的任务上。
*
打开通知:用户接收到通知并打开查看它。
*
用户转去做其它操作:用户在桌面启动。
当然,也有例外的。
除了刚才提到的两种方式,
另外还有一种打开新任务的情况,就在其内部开启一个
activity。例如,在邮件中以新任务的方式打开地图
activity或是打开一个浏览器
activity,当按
BACK键时就又会回到邮件
activity中。
Activities
和
Tasks
之旅
下面的例子阐述了应用程序的基本原则,主要有
activities,
activity栈,回退键,任务和意图;并展示了系统是如何响应用户请求的,例如用户开始了一个应用程序,用户不断的切换
UI,程序内部就是利用在不同任务之间切换
activities的。下面的许多例子你都可以在
Android手机上运行起来。
在桌面上开始一个
Activity
桌面是启动应用程序的主要地方,比如在桌面上点击应用程序图标就能将其打开,用户第一眼看到的就是应用程序中的主
activity。如下图,所描述的是用户在桌面点击
Email图标所发生的事情:

用
BACK
和
HOME
键进行导航
Activity保持或者丢掉其状态完全取决于用户是怎样离开这个
activity的
——使用
HOME键还是
BACK键。
默认情况下,按下
BACK键来结束(销毁)当前
activity并为用户显示上一个
activity。例如下图,用户在桌面上打开了邮件,当前
activity显示着邮件列表。用户将列表滚动条往下拉以便看到后面的邮件,这时用户按了
BACK键,那么
Android就会销毁这个邮件信息列表
activity并返回之前的
activity(桌面)。然后用户又重新打开邮件,还是那个列表,但是滚动条又回到了起始位置上。

上面的例子中,当按下
BACK键就返回到了桌面,由于那是用户在上一次看到的
activity。不过如果用户从其他
activity里面跳转到邮件列表,然后按下
BACK键则回到了先前的那个
activity(这里只是说明一下
BACK键的作用)。
相比之下,下面的图就是用
HOME键离开邮件列表
activity而不是
BACK键,那么当前
activity就呈
stop状态并移置后台而不是销毁。当再次打开邮件列表
activity时状态保持不变。

其它情况:有些应用程序则不是如上面所说的那样。例如联系人和画廊,用户在桌面打开联系人后查看了某个联系人的资料,接着再次打开联系人时,就不会显示之前的
activity了。这是因为联系人的主
activity有四个标签,是为了让用户能够看到全部的功能特性。
此外,也不是所有
activity都是当按下
BACK键之后销毁掉的。例如用户开始播放音乐,接着按下
BACK键,却不会影响音乐的播放。即使它的
activity不再可见,音乐应用程序依然会在状态栏上提示着用户。注意:你也可以让
activity不再可见时停止掉或是继续在后台运行
,但后者更适合像音乐这样的应用程序。
重用
activity
有两个应用程序中,它们分别也有两个
activity:
activity A 和
activity B。
A的部分功能需要调用
B的已实现功能,那么
B就叫被重用。
联系人重用画廊来获取图片
— 联系人
activity中会有联系人的照片,但是照片一般存放在画廊里面,所以联系人要重用画廊的功能来获取图片,画廊
activity就是重用的绝佳例子。下面的图画出了重用的流程
。
具体流程是这样的:用户打开了联系人,查看某一个联系人的资料并想编辑他的照片,这时,打开了画廊
activity,对图片进行设置并保存,那个联系人的图片也就相应的改变了。
注意画廊最终会返回给联系人一张图片。
下一个例子讲述一个
activity的重用并且不返回任何结果。同样需要注意下面的插图是说明通过
activity或是
activity栈来实现历史导航——用户可以通过每个
activity用任何方式回到桌面。
当开始设计一个应用程序时,一个不错的想法就是怎样能够在重用其它应用程序中的
activity或是你的
activity怎样被其它应用程序重用。如果用一样的
intent filter(已经存在了一个
activity)再添加一个
activity,那么系统会为用户显示出一个选择
UI,供用户选择使用那个
activity。
分享到:
相关推荐
在Android中,Activity的启动默认遵循任务栈(Task)的概念,新的Activity会被压入栈顶,而`finish()`操作会从栈顶移除当前Activity,使得前一个Activity回到栈顶。在TabHost中,你可以利用这个特性来管理Tab内的...
10. **多任务与多窗口**: Android 4.4支持多任务处理,如使用`Activity`的`TaskStackBuilder`和`Intent.FLAG_ACTIVITY_NEW_TASK`。 11. **性能优化**: 包含内存管理、性能调优、电量消耗分析和应用性能监控的最佳...
3. **活动(Activity)管理**:Activity是Android应用的主要组件,书中会详细阐述Activity的生命周期、Intent的使用、多Activity间的跳转以及Task和Back Stack的概念。 4. **服务(Service)**:服务在后台运行,不...
《Android教程》是一份深入浅出的Android开发学习资料,主要涵盖了Android开发的基础知识和实践技巧,旨在帮助初学者快速入门并逐步提升为熟练开发者。本教程内容丰富,包括了Android系统架构、开发环境搭建、UI设计...
开发者可以使用Material Design指南来创建美观且符合平台规范的界面。此外,Android支持动态布局和主题,可以根据用户的偏好和设备的屏幕尺寸自适应调整。 4. **权限管理**:Android应用需要在manifest.xml文件中...
Activity是Android应用的核心组件之一,它负责为用户提供与应用交互的界面。...熟练掌握Activity的创建、配置和管理,以及Intent的使用,能够帮助开发者构建出具有复杂交互逻辑的Android应用程序。
The biggest feature of Android is its open architecture, which notonly provides an excellent development and debugging environment but alsosupports various extensible user experiences, including rich...
根据提供的文档信息,我们可以归纳出以下几...通过以上总结,可以看出这份文档涵盖了Android UI设计的基础知识、设计原则、最佳实践等多个方面,对于想要深入了解Android应用设计的开发者来说是非常有价值的参考资料。
综上所述,Android用户界面设计涉及多个层面,包括Activity和Task的规划、菜单和对话的创建、事件处理、图标和Widget设计,以及风格一致性的维持。理解并掌握这些知识,对于开发出高质量、用户友好的Android应用至关...
3. **UI设计**:深入讲解Android的布局管理器、自定义视图以及Material Design指南,帮助开发者创建响应式和用户友好的界面。 4. **活动(Activity)与任务(Task)管理**:探讨活动的生命周期、启动模式、后台任务...
- **Activity堆栈**:Android采用任务(Task)和活动栈(Activity Stack)的概念,新的Activity默认会被压入栈顶,按后进先出原则处理。 2. **Intent对象**: - **调用Activity实例**:Intent是启动Activity的...
- Android的版本更新不断引入新的特性和API,如Material Design、Android Jetpack组件库等,帮助开发者提升用户体验和开发效率。 8. **测试与发布** - **测试**:开发者需要进行单元测试、集成测试和UI测试,确保...
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); startActivity(intent); ``` 6. **主题和暗黑模式** 随着暗黑模式的流行,Android引入了`night`模式。开发者可以创建两个...
【Android用户界面开发详解】 Android用户界面开发是构建Android应用程序的核心部分,...同时,了解和遵循Android的Activity和Task设计原则,以及Intent、Activity栈和任务管理,对于构建功能完善的应用程序至关重要。
综上所述,虽然使用Activity实现Splash屏幕是一种常见的做法,但开发者需要权衡其优缺点,确保提供良好的用户体验。在某些情况下,可能更倾向于采用其他技术,如使用Fragment或自定义启动主题,来实现类似的功能。
10. **Material Design遵循**:Android推崇Material Design设计语言,源代码可能会展示如何遵循这些设计原则,包括颜色方案、图标、布局和交互反馈。 通过深入研究这些源代码,开发者不仅可以学习到具体的编程技巧...
- 通过`setColor()`可以设置通知的颜色,配合Material Design指南提升用户体验。 - `setVisibility()`可以控制Notification对其他应用的可见性,如私密信息可以选择`VISIBILITY_SECRET`。 总结来说,掌握...
在"Task04"这个压缩包文件中,很可能是项目的源代码,包括Activity、Adapter、布局文件以及资源文件等。通过阅读和分析这些代码,你可以更好地理解上述知识点在实际项目中的应用。同时,如果项目提供了注释或文档,...
#### 知识点2:Activity与Task的设计 - **单任务模式**:每个Activity执行单一的任务,便于管理和维护。 - **生命周期管理**:理解Activity的生命周期,并妥善处理各个阶段的方法调用。 - **栈式管理**:合理利用...