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、启动模式)相关推荐

  1. Android Activity的启动模式及对生命周期的影响

    Activity的启动模式 官网解释链接 (tips:在阅读此文章前,应先对Activity生命周期掌握) 在每一个程序的main目录下有一个AndroidManifest.xml文件,这个文件是用来 ...

  2. Activity的启动模式详解

    Activity的启动模式详解 Activity有四种载入模式:standard(默认), singleTop, singleTask和 singleInstance. (1).standard(默认 ...

  3. Android入门(六) | Activity 的启动模式 及 生产环境中关于 Activity 的小技巧

    文章目录 Activity 的启动模式 standard singleTop singleTask singleInstance 技巧 了解当前界面是哪个 Activity 随时随地退出程序 启动活动 ...

  4. Android 源码分析 Activity的启动模式

    一直想抽空针对AMS进行源码分析,无奈一方面因为很忙,另外AMS很复杂,涉及的知识点也比较多,今天利用五一假期对AMS的一个方面,Activity的启动模式进行源码分析,这里面包括了ActivityR ...

  5. Android中Activity的启动模式和使用场景

    一.为什么需要启动模式 在Android开发中,我们都知道,在默认的情况下,如果我们启动的是同一个Activity的话,系统会创建多个实例并把它们一一放入任务栈中.当我们点击返回(back)键,这些A ...

  6. Activity(三)—— Activity的启动模式

    Activity的启动模式 1 Activity的LaunchMode Activity为什么需要启动模式?在默认情况下,当我们多次启动同一个Activity的时候,系统会创建多个实例并把它们一一放入 ...

  7. 二、Activity 的启动模式

    一.四种启动模式: ① standard(标准模式) 这个是系统的默认模式.在这种模式下,每次启动一个 Activity 都会重新创建一个新的实例,不管这个实例是否已经存在,并且谁启动了这个 Acti ...

  8. Activity的启动模式

    题目:Activity的启动模式,区别 这道题想考察什么? 启动模式是什么? 启动模式如何设置? Activity的启动模式区别? 应用场景以及那些注意的点? 考察的知识点 启动任务,返回栈,启动模式 ...

  9. Activity的启动模式与flag详解

    Activity有四种加载模式:standard(默认), singleTop, singleTask和 singleInstance.以下逐一举例说明他们的区别: standard:Activity ...

  10. Activity的启动模式总结

    <activity android:name="ActivityMain" android:launchMode="singleTask">< ...

最新文章

  1. 员工执行力差怎么办?任正非说,抓住这12条,3天打造狼性团队
  2. xps 9550 uefi 安装操作系统详解
  3. c++ 程序执行时间
  4. 机器学习知识体系(强烈推荐)
  5. 深度学习(十)keras学习笔记
  6. 神策数据桑文锋:让销售回归科学
  7. 第五节 面向对象相关特性
  8. Ng第二课:单变量线性回归(Linear Regression with One Variable)
  9. 【dijkstra模板】旅游规划 (25 分)
  10. 前端学习(2879):实现v-if和v-show设计分析 视图搭建
  11. 18. OD-反调试研究,破解反调试,编写反调试
  12. Spring框架----四种常用通知类型
  13. Object类的使用
  14. sqlserver数据库分组查询
  15. ORM框架 Dapper
  16. 中国1km分辨率的DEM数据以及合并后的中国行政区划数据
  17. excel最常用的八个函数
  18. 冠希哥的英文还是diao 说的真好 瑞斯白
  19. Erlang数据结构
  20. Shader 学习笔记:杂记

热门文章

  1. Mysql之主从复制及主主复制
  2. kali linux 下载百度云大文件
  3. 017-封装-OC笔记
  4. Quick-cocos2d-x3.3 Study (一) --------- 创建一个UI标签
  5. HTML5 Web app开发工具Kendo UI Web中图像浏览器的使用
  6. input text
  7. c++面试题之内存分配
  8. Debian Security Advisory(Debian安全报告) DSA-4410-1 openjdk-8 security update
  9. OOM分析之问题定位(二)
  10. 贴现率 vs 折现率