Activity(3、启动模式)
android显示activity界面实质是不同的activity类实例化的结果,针对每个APP android都会维护一个activity的堆栈以处理跳转以及back键操作等。处于
堆栈顶端的就是显示的activity。
activity存在四中启动方式,或者说是实例化的方式,包括:
- standard:
标准方式,也是默认方式,每次activity加载时都会有新的实例,如下例:
//创建一个activity,设置为standard public class MainActivity extends Activity {protected final static String TAG_ACTIVITY = "MainActivity";private static int mCount = 0; //维护一个静态变量 。。。protected void onCreate(Bundle savedInstanceState) {Log.i(TAG_ACTIVITY, "onCreate:" + mCount++); 。。。 }protected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();Log.i(TAG_ACTIVITY, "onDestroy:" + mCount--);}
增加一个button,点击后跳转到自己:
Intent intent1 = new Intent(MainActivity.this, MainActivity.class); startActivity(intent1);
当点击后,我们可以发现,每次点击按钮后,oncreate都会被调用,打印oncreate:0 -> oncreate:1 -> oncreate:3, 当点击back键时依次destroy
- singleTop
在这种模式下,若activity已存在,则不再重新实例化。仍然按照上面的例子,将模式调整为singleTop,每次点击按钮后,oncreate不会被调用,只打印第一次的 oncreate:0。
- singleTask
当设置为singletask的activity被激活时,堆栈中的之上其他activity都会被destroy,如下例:
我们activity1,activity2,activity3,设置activity1为sigleTask。此时三个activity依次激活,于是有activity1 oncreate,activity2 oncreate,activity3 oncreate事件。
当我们增加按钮从activity 3直接跳转至activity1时,activity2和activity3都会被destroy。
备注:此时activity1的oncreate事件不会被触发,而是触发onNewIntent。适合将APP的首个activity设置成singleTask,用于退出应用。
- singleInstance
该模式与sigleTop类似,只是应用的场景是在跨APP中,例如:
//在com.example.demo02中触发如下跳转 Intent intent3 = new Intent(); intent3.setClassName("com.example.demo01", "com.example.demo01.MainActivity"); startActivity(intent3);
若com.example.demo01.MainActivity设置为singleInstance,那么如果已经被oncreate,则不会再次oncreate。也就是说这个实例会被不同的activity重用。
备注:但点击back的时候仍然会被destroy。
转载于:https://www.cnblogs.com/Fredric-2013/archive/2013/01/23/4214678.html
Activity(3、启动模式)相关推荐
- Android Activity的启动模式及对生命周期的影响
Activity的启动模式 官网解释链接 (tips:在阅读此文章前,应先对Activity生命周期掌握) 在每一个程序的main目录下有一个AndroidManifest.xml文件,这个文件是用来 ...
- Activity的启动模式详解
Activity的启动模式详解 Activity有四种载入模式:standard(默认), singleTop, singleTask和 singleInstance. (1).standard(默认 ...
- Android入门(六) | Activity 的启动模式 及 生产环境中关于 Activity 的小技巧
文章目录 Activity 的启动模式 standard singleTop singleTask singleInstance 技巧 了解当前界面是哪个 Activity 随时随地退出程序 启动活动 ...
- Android 源码分析 Activity的启动模式
一直想抽空针对AMS进行源码分析,无奈一方面因为很忙,另外AMS很复杂,涉及的知识点也比较多,今天利用五一假期对AMS的一个方面,Activity的启动模式进行源码分析,这里面包括了ActivityR ...
- Android中Activity的启动模式和使用场景
一.为什么需要启动模式 在Android开发中,我们都知道,在默认的情况下,如果我们启动的是同一个Activity的话,系统会创建多个实例并把它们一一放入任务栈中.当我们点击返回(back)键,这些A ...
- Activity(三)—— Activity的启动模式
Activity的启动模式 1 Activity的LaunchMode Activity为什么需要启动模式?在默认情况下,当我们多次启动同一个Activity的时候,系统会创建多个实例并把它们一一放入 ...
- 二、Activity 的启动模式
一.四种启动模式: ① standard(标准模式) 这个是系统的默认模式.在这种模式下,每次启动一个 Activity 都会重新创建一个新的实例,不管这个实例是否已经存在,并且谁启动了这个 Acti ...
- Activity的启动模式
题目:Activity的启动模式,区别 这道题想考察什么? 启动模式是什么? 启动模式如何设置? Activity的启动模式区别? 应用场景以及那些注意的点? 考察的知识点 启动任务,返回栈,启动模式 ...
- Activity的启动模式与flag详解
Activity有四种加载模式:standard(默认), singleTop, singleTask和 singleInstance.以下逐一举例说明他们的区别: standard:Activity ...
- Activity的启动模式总结
<activity android:name="ActivityMain" android:launchMode="singleTask">< ...
最新文章
- 员工执行力差怎么办?任正非说,抓住这12条,3天打造狼性团队
- xps 9550 uefi 安装操作系统详解
- c++ 程序执行时间
- 机器学习知识体系(强烈推荐)
- 深度学习(十)keras学习笔记
- 神策数据桑文锋:让销售回归科学
- 第五节 面向对象相关特性
- Ng第二课:单变量线性回归(Linear Regression with One Variable)
- 【dijkstra模板】旅游规划 (25 分)
- 前端学习(2879):实现v-if和v-show设计分析 视图搭建
- 18. OD-反调试研究,破解反调试,编写反调试
- Spring框架----四种常用通知类型
- Object类的使用
- sqlserver数据库分组查询
- ORM框架 Dapper
- 中国1km分辨率的DEM数据以及合并后的中国行政区划数据
- excel最常用的八个函数
- 冠希哥的英文还是diao 说的真好 瑞斯白
- Erlang数据结构
- Shader 学习笔记:杂记