Activity的启动模式

Activity的启动模式

一、启动模式有几种,分别用于哪些场景
  • 1、standard 默认模式

    系统默认的启动方式,这个启动方式每次都会创建新的实例,每次点击standard模式创建activity后,都会创建新的activity覆盖在原activity上

  • 2、singleTop

    在启动时,系统会判断当前栈顶activity是不是要启动的activity,如果是则不会创建新的activity而直接引用这个activity;如果不是则创建新的activity。

    通常用于接收到消息之后显示的界面。

    这个启动方式虽然在栈顶存在目标activity的时候不会创建新的实例,但是会在启动时调用onNewIntent()方法。

    目标activity A

    不会创建:A-B 栈顶是A

    会创建: B-A 栈顶是B

  • 3、singleTask

    和singleTop相似,只不过singleTop是检测栈顶元素是否是需要启动的activity,而singleTask是检测整个activity栈中是否存在当前需要启动的activity,如果存在则将该activity置于栈顶,并将activity以上的activity都销毁。
    如果启动的模式为singleTask的activity已经在后台一个任务栈中,那么启动后,后台的这个任务栈将被切换到前台,

    这种模式适用于退出整个应用:
    将主activity设为singleTask模式,然后在要退出的activity中转到主activity,从而将主activity之上的activity都清除,然后重写主activity的onNewIntent(),在方法中加上一句finish(),将最后一个activity结束掉。

    目标Activity A

    不会创建:

    A-B 栈顶是A

    B-A 栈顶是B,打开A是会把B销毁

    会创建 : B-C 栈中不存在A,会创建

  • 4、singleInstance

    类似浏览器工作原理
    申明为singleInstance的activity会出现在一个新的任务栈中,而且该任务栈中只存在这一个activity。

    常用于需要与程序分离的界面

二、Intent Flag 启动模式
  • Intent.FLAG_ACTIVITY_NEW_TASK

    使用一个新的Task来启动一个Activity,当启动的每个Activity都将在一个新的Task中。

    该Flag通常使用在从Service中启动Activity的场景,由于在Service中并不存在Activity栈,所以使用该Flag来创建一个新的Activity栈,并创建新的实例

  • Intent.FLAG_ACTIVITY_SINGLE_TOP

    使用该Flag来启动一个activity,与指定 Android:launchMode=“singleTop”效果一样

  • Intent.FLAG_ACTIVITY_CLEAR_TOP

    使用该Flag来启动一个activity,与指定 Android:launchMode=“singleTask”效果一样

  • Intent.FLAG_ACTIVITY_NO_HISTORY

    使用该Flag启动activity,当该activity启动其他activity后,该activity就会消失了,不会保留在activity栈中,

三、清晰地描述下 onNewIntent 和 onConfigurationChanged 这两个生命周期方法的场景?
  • 1、调用onNewIntent的场景:

    (a)启动模式SingleTop,如果栈顶是目标Activity时则调用onNewIntent

    (b)启动模式SingleTask,如果栈内存在目标Activity是则不会创建实例,调用onNewIntent

  • 2、调用onConfigurationChanged

在manifest 声明的activity中加入

android:configChanges="orientation|keyboard|keyboardHidden|screenSize"

在屏幕旋转或屏幕大小改变或软键盘弹出或软键盘隐藏就会调用
onConfigurationChanged();
如果没有加声明,activity在上述情况改变是会重建

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
08-10
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值