Android四大组件之Activity详解
一、Activity的概要说明
我看过Activity的源码,Activity类注释大概是这样解释的:几乎所有的Activity都是与用户交互用的,我想用了一个几乎的意思应该是排除一些纯展示界面吧,因此Activity类主要是创建一个窗口来展示我们所做的UI界面,我们用的时候通常是全屏来展示UI界面的,但是Activity也有一些其他的用途,比如当做一个悬浮的视窗来用(在清单文件里更改Activity的主题)。
二、Activity的四种LaunchMode
设置:<activity android:name=".MainActivity" android:launchMode="standard" />
1、Standard:把Activity设置成Standard启动模式的意思是:比如当前显示的界面是FirstActivity,此时任务栈里就会有一个FirstActivity实例,接下来由FirstActivity跳转到FirstActivity,此时任务栈里就会生成一个新的FirstActivity实例,如果再次跳转到FirstActivity,任务栈里又会多出第二个FirstActivity实例,到现在为止任务栈里一共有三个FirstActivity实例,这时候我们连着按两次Back键,才会返回到第一个FirstActivity,如下图所示:
2、SingleTop:比如当前界面显示的界面是FirstActivity,此时任务栈里就会有一个FirstActivity实例,接下来由FirstActivity跳转到FirstActivity,这个时候系统发现在栈顶处已经存在一个FirstActivity实例了,所以就不会再新建FirstActivity实例了(如第一个图),否则就会在栈顶新建它的实例(如第二个图),从SecondActivity跳转到FirstActivity的时候,发现虽然任务栈里存在FirstActivity实例,但是位置不在栈顶,所有就新建了一个FirstActivity实例。
3、SingTask:比如我们当前显示的界面是FirstActivity,此时任务栈里就会有一个FirstActivivity实例,接下来由FirstActivity跳转到SecondActivity,系统发现任务栈里还没有SecondActivity实例,于是就会新建一个SecongActivity实例放于栈顶(如下图的上半部分),接下来我们由SecondActivity跳转到FirstActivivity,系统会发现在栈里已经存在FirstActivivity实例了(不管位置在哪),所以就不会在栈里新建FirstActivity实例的,同时还会把FirstActivity实例上面的对象全不都弹出栈(如下图的下半部分)。
4、singleInstance:这种启动模式的特别之处在于会启动一个新栈,一个栈存放一类(类别)的实例,就好比动物园里,好多只老虎有自己的园子,好多只猴子又有自己的园子,这里的老虎猴子就是不同的Activity,每一只老虎猴子就是个自Activity的实例。
比如说我们当前显示的界面是FirstActivity,此时栈里就会有一个FirstActivivity实例,接下来由FirstActivity跳转到SecondActivity,这个时候就会出现一个新栈来存放SecondActivity实例的,按一下Back键又回到了第一个栈里(如下边第一个图)。假如我们从FirstActivity跳转到SecondActivity,又从SecondActivity跳转到FirstActivity,这个时候在FirstActivity所在的栈里又会创建一个新的FirstActivity实例放在栈顶,接下来我们按两次Back键,并没有退出程序,而是回到了SecondActivity(如下边第二个图)。
而
是直接执行onConfigurationChanged()。如果不申明此段代码,按照Activity的生命周期,都会去执行一次
onCreate()方法,而onCreate()方法通常会在显示之前做
方法,就有可能造成重复的初始化,降低程序效率是必然的了,而且更有可能因为重复的初始化而导

X1CQ]2{@ZAW$2G$M.png)



Android四大组件之Activity详解的更多相关文章
- Android四大组件之Activity详解——创建和启动Activity
前面我们已经对Activity有过简单的介绍: Android开发——初始Activity Android开发——响应用户事件 Android开发——Activity生命周期 先来看一下最终结果 项目 ...
- Android四大组件之Activity详解——传值和获取结果
废话不多说,先来看效果图 项目源码: http://download.csdn.net/detail/ginodung/8331535 程序说明: 在MainActivity中输入用户名和密码,然后提 ...
- Android四大组件之一 -- Service详解
相信大多数朋友对Service这个名词都不会陌生,没错,一个老练的Android程序员如果连Service都没听说过的话,那确实也太逊了.Service作为Android四大组件之一,在每一个应用程序 ...
- Android四大组件之——Activity的生命周期(图文详解)
转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com [Andro ...
- Android四大组件之——Activity的开启:StartActivity()和StartActivityForResult()(图文详解)
如需转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com ...
- Android四大组件之Activity(活动)及其布局的创建与加载布局
Android四大组件之Activity(活动)及其布局的创建与加载布局 什么是Activity ? 活动(Activity)是包含用户界面的组件,主要用于和用户进行交互的,一个应用程序中可以包含零个 ...
- 【Android开发日记】之入门篇(四)——Android四大组件之Activity
在Android中,无论是开发者还是用户,接触最多的就算是Activity.它是Android中最复杂.最核心的组件.Activity组件是负责与用户进行交互的组件,它的设计理念在很多方面都和Web页 ...
- Android四大组件之——Activity(一)定义、状态和后退栈(图文详解)
什么是Activity 关键字:应用组件.四大组件.用户界面,交互. An Activity is an application component that provides a screen wi ...
- Android学习之基础知识十三 — 四大组件之服务详解第一讲
一.服务是什么 服务(Service)是Android中实现程序后台运行的解决方案,它非常适合去执行那些不需要和用户交互而且还要求长期运行的任务.服务的运行不依赖于任何用户界面,即使程序被切换到后台, ...
随机推荐
- 基于Socket的UDP和TCP编程介绍
一.概述 TCP(传输控制协议)和UDP(用户数据报协议是网络体系结构TCP/IP模型中传输层一层中的两个不同的通信协议. TCP:传输控制协议,一种面向连接的协议,给用户进程提供可靠的全双工的字节流 ...
- SLC和MLC
SLC 和MLC分别是是Single Layer Cell 单层单元和Multi-Level Cell多层单元的缩写,SLC的特点是成本高.容量小.速度快,而MLC的特点是容量大成本低,但是速度慢.M ...
- 你是否决绝平庸,你有勇气来学C/C++吗,有勇气来检验你是否经得起世界五百强的面试
如果你来传智播客学习 你的目标就是要积累工作经验 有机会参加世界五百强的面试 秒杀世界五百强的面试 赢得高薪的offer! C/C++课程大纲 C语言3周21天 完全掌握C语言的本质,成为一名合 ...
- 通过crash了解linux页表
目的: 通过一个c语言实例,了解linux页表的组织结果和mmu的工作原理. 通过页表找到一个物理地址, 对比物理地址与虚拟地址的内容是否一致. 运行环境: $ uname -r3.15.6-200. ...
- Objective-C 类属性和方法的訪问权限
OC中提供了4种訪问权限.@private, @public, @protected这三种和其它的C++, Java是一样的,@package这个訪问权限并非Java里的包訪问权限,OC中没有包的概念 ...
- mvc下载文件
MVC下载文件方式 方式一: public FileStreamResult DownFile(string filePath, string fileName) { string ab ...
- 集合的实现 -- 数据结构与算法的javascript描述 第九章
集合 集合(set)是一种包含不同元素的数据结构. 集合中的元素称为成员. 集合的两个最重要特性是:首先,集合中的成员是无序的:其次,集合中不允许相同成员存在. code function Set() ...
- NGINX 多个域名配置
多个域名配置: 依赖于 include 这个功能会加在 这2个文件夹下的所有配置文件. 所以我们可以配置多个 conf 放置于这些文件夹中.这样就是先了多个域名配置 conf 内容大致如下 s ...
- JavaScript之充实文档的内容
1.我们在平时的开发中会碰到一些缩略语如:XML,HTML,API等专业术语:为了能使用户,更好的了解术语的意思,我们通常会给<abbr></abbr>标签加一个title属性 ...
- left outer join
table A: Field_K, Field_A 1 a 3 b 4 ...