Android 四大组件学习之Activity七
本节学习Activity的加载模式。可能就会问,什么是加载模式? 加载方式有什么用途? 这是因为Android系统对Activity是采用Task栈来管理的。Task栈是采用先进后出的方式,先启动的Activity放在栈底,后启动的Activity是放在栈顶。
Activity共有四种加载方式:
1:standard:标准模式,同时也是默认的加载方式
2:singleTop:Task栈顶单例模式
3:singleTask:Task栈内单例模式
4:singleInstance:全局单例模式
下面举例说明四种加载模式。
1. stardard加载模式
Activity逻辑代码:
public class FirstActivity extends Activity {private TextView textView;private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_first);textView = (TextView)findViewById(R.id.textView1);button = (Button)findViewById(R.id.button1);String string = "Activity_id: "+this.toString()+ "\n"+ "task_id: " + this.getTaskId();textView.setText(string);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {//自己启动自己
Intent intent = new Intent(FirstActivity.this, FirstActivity.class);startActivity(intent);}});}
}
布局文件就一个TextView和一个Button,大家自行编写
记得全局配置文件中Activity的加载模式,必须配置为Standard
以下是运行效果:
可以明显的看出,当我按三次加上刚进来的第一次,共四次。 可以明显的看出,四次的Activity的id是不一样的,TaskId是一样的。
这说明了,当加载方式是Standard的时候,当我们向实例话Activity时,总是为我们重新创建一个Activity,但这些Activity都是位于同一个Task中的。当然了,如果向全部推出,就需要按四次Back键才会完全退出。
上图就是FirstActivity的栈示意图
2:singleTop模式
这种模式分两种情况:
a: 当此Activity位于栈顶
上面的FirstActivity代码不变(为了让大家看到我确实按下了,当我按下时我会设置button的值),此时配置文件中的加载模式改为singleTop
演示效果如下:
通过上图可以看到,当加载模式是singleTop的话,并且次Activity位于栈顶,每次实例化FirstActivity,却只是实例化一次。
b:当出现如下图这种情况时
我们新建一个SecondActivity,此Activity的加载模式是Stardard
public class SecondActivity extends Activity {private TextView textView;private Button button;@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(R.layout.activity_second);textView = (TextView)findViewById(R.id.textView1);button = (Button)findViewById(R.id.button1);String string = "Activity_id: "+this.toString()+ "\n"+ "task_id: " + this.getTaskId();textView.setText(string);button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubIntent intent = new Intent(SecondActivity.this, FirstActivity.class);startActivity(intent);}});}
}
此时FirstActivity中的Intent就不是启动自己了,是启动SecondActivity。
button.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubIntent intent = new Intent(FirstActivity.this, SecondActivity.class);startActivity(intent);++count;button.setText("button: " + count);}});
运行效果如下:
此时栈里的情况为:
可以说明,SingleTop加载模式是: 如果此Activity是位于栈顶的,再次加载就不用实例话。如果不位于栈顶,那么加载时还必须实例化。
3:singTask加载模式:
此种加载模式分为3中:
a: 如果要启动的Activity不存在,那就实例化并加入栈顶
b:如果要启动的Activity存在,并且位于栈顶,那就不需要实例化(这种情况就是SingleTop加载模式)
c:如果要启动的Activity存在,但是不位于栈顶,那就需要将目标Activity上面的Activity全部出栈。
我们就分析c这种情况:
代码不用改变,只需要将FirstActivity配置为SingleTask模式
运行效果如下:
4:singleInstance加载模式:
代码不用改动,只需将配置文件中FirstActivity改为singleInstace加载模式
运行效果如下:
可以看的,FirstActivity与SecondActivity是不位于同一个栈,可以明显看到Taskid=12的栈中就唯一存在一个FirstActivity
可以看出singleInstace加载模式,系统保证无论从那个Task中启动目标Activity,知会创建一个目标Activity实例,并使用一个全新的Task类管理该Activity实例。
好。 今天Activity的启动模式就说到这里
Android 四大组件学习之Activity七相关推荐
- Android四大组件之——Activity的生命周期(图文详解)
转载请在文章开头处注明本博客网址:http://www.cnblogs.com/JohnTsai 联系方式:JohnTsai.Work@gmail.com [Andro ...
- Android四大组件之——Activity(一)定义、状态和后退栈(图文详解)
什么是Activity 关键字:应用组件.四大组件.用户界面,交互. An Activity is an application component that provides a screen wi ...
- Android——四大组件、六大布局、五大存储
一.android四大组件 (一)android四大组件详解 Android四大组件分别为activity.service.content provider.broadcast receiver. 1 ...
- Android四大组件和启动模式(面试总结)
一.Android四大组件详解 Android四大组件分别为Activity.Service.Content Provider.Broadcast Receiver. 1.Activity (1)一个 ...
- Kotlin第七章: Android四大组件
1. 四大组件 四大组件是每一个Android人必须要会,要掌握的知识点,因为他们是我们在日常开发工作中打交道最频繁的组件,而且他们四个在不同的领域扮演着极其重要的角色. Activity: 负责用户 ...
- 重温Android四大组件(一)—Activity的生命周期
前言 四大组件对于Android开发者是老生常谈的知识了,相信每个Android开发者对四大组件都已经很熟悉了.但是四大组件作为Android应用的基础,作为开发者不仅要熟悉而且要烂熟于心. 这里以& ...
- android的四大组件及使用场景,Android/四大组件/Activity.md · BoraxZYF/AndroidInterview - Gitee.com...
## 四大组件 ## Activity ### Activity 的四种启动模式及使用场景 - standard 标准模式,Activity 的默认启动模式.每次启动一个 Activity 时都会创建 ...
- 第六课-Android四大组件之Activity
Activity是Android四大组件之一,它是个控制类,主要控制界面的加载显示,用户交互处理,数据的获取,数据的传送等.在它的onCreate方法中的setContentView方法就是来加载一个 ...
- Android四大组件之Activity(第一篇-简单使用)
Android四大组件之Activity(第一篇-简单使用) 前言 一.Activity是什么? 二.如何使用 1.继承 2.重写onCreate() 总结 文章目录 前言 一.Activity是什么 ...
- Android四大组件之——Broadcast学习总结
1.Broadcast概念 是一个全局的监听器,属于Android四大组件之一.Broadcast(广播)是一种广泛运用的在应用程序(APP)之间传输信息的机制.而BroadcastReceiver( ...
最新文章
- C 语言编程 — 输入/输出与文件操作
- Python 爬虫 大量数据清洗 ---- sql语句优化
- 配置System Center Data Protection Manager 2007
- 将这五个原则变成习惯,你的开发经验更值钱!
- Vue为何采用异步渲染
- 品牌的mysql数据库监控_zabbix实现mysql数据库的监控(四)
- 基于JAVA+SpringBoot+Mybatis+MYSQL的旅游管理系统
- VC++6.0 内存泄露(Memory Leaks)征兆1
- laravel Migration与Seeder的用法
- srgb色彩空间_网页设计师的色彩:了解sRGB
- 联发科MTK(3G,4G,5G)核心板/芯片简介
- 工程师“魔改” AirPods Pro 接口,苹果“妥协”将成大势所趋?
- Windows重定向技术【文件重定向与注册表重定向】
- tp6框架结合阿里短信接口发送短信并记录redis
- Stacks of Flapjacks UVA 薄饼排序问题
- win7计算机无法启动,Win7 64位系统电脑无法开机进不了系统的解决方法【图】
- 端午节主题模板--Ideappt原创PPT模板系列
- 在公司没事做的时候很心虚
- 近期AI创业公司总结
- 关于光源的明场和暗场照明
热门文章
- JAVA学习第六十三课 — 关于client服务端 amp;amp; URL类 amp; URLConnection
- BZOJ 3160: 万径人踪灭 [fft manacher]
- javascript笔记——图片大小检测
- 美图秀秀美化图片之【增强】模块界面与功能设计
- java 按字节读文件_JAVA按字节读取文件的简单实例
- Mutes锁_递归锁_信号量semaphore
- 如何查询redhat的版本信息
- MySQL双主机双Master方案测试
- OkHttp3用法全解析
- SpringMVC 的运行流程