`

activity 基础补习

阅读更多

在android里,有4种activity的启动模式,分别为:
  ·standard: 标准模式,一调用startActivity()方法就会产生一个新的实例。
  ·singleTop: 如果已经有一个实例位于Activity栈的顶部时,就不产生新的实例,而只是调用Activity中的newInstance()方法。如果不位于栈顶,会产生一个新的实例。
  ·singleTask: 会在一个新的task中产生这个实例,以后每次调用都会使用这个,不会去产生新的实例了。
  ·singleInstance: 这个跟singleTask基本上是一样,只有一个区别:在这个模式下的Activity实例所处的task中,只能有这个activity实例,不能有其他的实例。
  这些启动模式可以在功能清单文件AndroidManifest.xml中进行设置,中的launchMode属性

四种加载模式的区别
  所属task的区别
  一般情况下,“standard”和”singleTop”的activity的目标task,和收到的Intent的发送者在同一个task内,就相当于谁调用它,它就跟谁在同一个Task中。
  除非Intent包括参数FLAG_ACTIVITY_NEW_TASK。如果提供了FLAG_ACTIVITY_NEW_TASK参数,会启动到别的task里。
  “singleTask”和”singleInstance” 总是把要启动的activity作为一个task的根元素,他们不会被启动到一个其他task里。
  是否允许多个实例
  “standard”和”singleTop”可以被实例化多次,并且是可以存在于不同的task中;这种实例化时一个task可以包括一个activity的多个实例;
  “singleTask”和”singleInstance”则限制只生成一个实例,并且是task的根元素。
  singleTop 要求如果创建intent的时候栈顶已经有要创建的Activity的实例,则将intent发送给该实例,而不创建新的实例。
  是否允许其它activity存在于本task内
  “singleInstance”独占一个task,其它activity不能存在那个task里;
  如果它启动了一个新的activity,不管新的activity的launch mode 如何,新的activity都将会到别的task里运行(如同加了FLAG_ACTIVITY_NEW_TASK参数)。
  而另外三种模式,则可以和其它activity共存。
  是否每次都生成新实例
  “standard”对于每一个启动Intent都会生成一个activity的新实例;
  “singleTop”的activity如果在task的栈顶的话,则不生成新的该activity的实例,直接使用栈顶的实例,否则,生成该activity的实例。
  比如:
  现在task栈元素为A-B-C-D(D在栈顶),这时候给D发一个启动intent,如果D是 “standard”的,则生成D的一个新实例,栈变为A-B-C-D-D。
  如果D是singleTop的话,则不会生产D的新实例,栈状态仍为A-B-C-D
  如果这时候给B发Intent的话,不管B的launchmode是”standard” 还是 “singleTop” ,都会生成B的新实例,栈状态变为A-B-C-D-B。
  “singleInstance”是其所在栈的唯一activity,它会每次都被重用。
  “singleTask” 如果在栈顶,则接受intent,否则,该intent会被丢弃,但是该task仍会回到前台。 当已经存在的activity实例处理新的intent时候,会调用onNewIntent()方法,如果收到intent生成一个activity实例,那么用户可以通过back键回到上一个状态;如果是已经存在的一个activity来处理这个intent的话,用户不能通过按back键返回到这之前的状态。

分享到:
评论

相关推荐

    Android 开发Activity基础 启动和跳转并传递参数

    了解Activity的基础,特别是如何启动、跳转以及传递参数,是每个Android开发者必须掌握的关键技能。 一、Activity的基础概念 Activity是Android系统中负责与用户交互的组件,它负责展示UI和处理用户事件。每个...

    Android基础系列的Activity

    本系列将深入探讨Android基础中的Activity相关知识,帮助开发者理解和掌握如何创建、管理和控制Activity。 首先,Activity的生命周期是理解Activity的关键。一个Activity会经历创建(onCreate())、启动(onStart()...

    Activity基础知识总结

    文档通过代码实践总结了Activity的生命周期方法,Launcher Mode启动方式,Intent Filter的匹配规则。同时文档中用截图记录关键的Log信息。文件中也包含了代码可以方便的学习和理解Activity。

    Android知识点Activity篇.pdf

    理解并熟练掌握Activity的生命周期及其管理是Android开发的基础,对于优化性能、处理用户交互以及妥善管理资源至关重要。开发者应根据具体需求合理利用这些回调方法,确保应用在各种场景下都能正确、高效地运行。

    重建Activity-Recreating an Activity

    在Android开发中,Activity是应用组件的一种,它提供了一个屏幕,用户可以在其中进行交互。Activity的生命周期是管理Activity状态的一系列方法,确保在不同情况下能正确地保存和恢复用户的进度。在Activity生命周期...

    安卓基本知识只Activity学习源代码

    Activity学习是安卓开发初学者必须掌握的基础知识。理解并熟练运用Activity,可以帮助开发者构建出功能丰富的交互式应用程序。在这个"安卓基本知识之Activity学习源代码"中,我们将深入探讨Activity的工作原理、生命...

    Android 中从activity1跳转到activity2再回到activity所经历的生命周期

    本文将详细解析从一个Activity(Activity1)跳转到另一个Activity(Activity2),然后再返回到原Activity(Activity1)时,这两个Activity分别会经历哪些生命周期方法。 #### Activity1的生命周期变化 1. **...

    Android基础-2(Activity)

    这个主题“Android基础-2(Activity)”深入讲解了Activity的关键概念,包括其创建、注册、启动、关闭以及生命周期,同时也关注了如何在特定时刻保存Activity的状态。下面将详细阐述这些知识点。 首先,创建一个...

    Android父Activity获取子Activity返回信息demo

    在Android应用开发中,Activity是构成应用程序的基本组件,它代表用户界面的一个屏幕。有时,我们需要在子Activity执行某些操作后将结果返回给父Activity。这个过程通常涉及到Intent的使用,Intent不仅用于启动新的...

    activity3activity3activity3activity3activity3activity3activity3a

    标题中的"activity3activity3activity3activity3activity3activity3activity3a"看起来可能是由于重复输入造成的错误,我们可以简化为"activity3",这通常在编程或软件开发中可能代表一个特定的操作、事件或者组件。...

    activity7学习教程

    1、包含activity7的大纲脑图 2、示例代码,activity整合spring,整合springboot 3、导学笔记和视频 4、pdf讲义和markdown讲义 四、Activiti是目前使用最常用的工作流引擎,在企业中的应用非常广泛。 内容主要分为3...

    activity跳转后关闭父activity

    假如说有一个activity A,在A中跳转到Activity B, 然后在B中跳转到Activity C中,最后要在C中把activity A,B,C都关掉。  首先有一个Activity A,A中有一个Button,点击这个Button会跳到Activity B中去,但会拿到...

    android activity 生命周期

    在Android开发中,...总结来说,掌握Activity的生命周期是Android开发的基础,它涉及到如何有效地管理资源,确保应用的响应性和用户体验。通过对生命周期的理解,开发者能够编写出更稳定、高效的Android应用程序。

    Activity生命周期完美呈现

    Activity是Android应用开发...总之,理解并掌握Activity的生命周期是Android开发的基础,它关乎应用的用户体验和性能优化。通过实践和调试,开发者能更好地应对各种场景下的Activity管理,从而提高应用的质量和稳定性。

    Tab中的Activity嵌入子Activity

    在Android开发中,"Tab中的Activity嵌入子Activity"是一个常见的设计模式,它涉及到UI设计、Activity栈管理和用户交互。这种做法通常是为了解决多视图切换和保持应用层级结构清晰的问题。以下是对这一主题的详细说明...

    activity与activity利用接口相互传递数据

    在Android开发中,Activity是应用程序的基本组件,用于展示用户界面并处理用户交互。当我们需要在两个Activity之间传递数据时,通常有多种方法,如Intent、Bundle、静态变量、文件、数据库等。本教程将聚焦于一种...

    从application启动activity

    在Android应用开发中,"从application启动activity"是常见的操作,涉及到Android系统的基本架构和生命周期管理。Application类是每个Android应用程序的基类,它在应用程序的生命周期中扮演着核心角色,而Activity是...

    android实现activity跳转

    在Android应用开发中,Activity是构成应用程序的...理解并掌握这些基础知识,对于初学者来说是非常重要的,也是构建Android应用的基础。通过实践和理解,你将能够灵活地在不同Activity之间进行跳转,并实现数据的传递。

    Activity返回到指定Activity页面Demo

    总的来说,理解并熟练掌握Android的Activity管理、Intent的使用以及生命周期方法,是实现“Activity返回到指定Activity页面”的基础。开发者需要根据应用的具体需求,灵活运用这些机制,确保用户能够流畅地在各个...

    LauncherActivity 开发启动Activity的界面

    在Android应用开发中,`LauncherActivity`是一个特殊类型的`Activity`,它扮演着应用程序的主入口点角色。用户通常通过`LauncherActivity`首次与应用交互,因此它的设计和实现至关重要。`LauncherActivity`通常显示...

Global site tag (gtag.js) - Google Analytics