activity 启动模式_Android世界:Activity的启动模式及其适用范围

一、Activity启动模式简介

activity启动模式,可以理解为activity在任务栈(也叫“回退栈”)的回退规则,即点击“back”键时,activity的执行顺序。为节省资源,方便调用,Android构建不同的启动模式以便于开发者在不同场景使用。

该属性声明在Manifest文件中,由launchMode进行配置,内含4种启动模式,如下:

02b9dbac145f4730bd291afa4a37b2fa

补充:任务栈,是一个先进后出的存储空间,存放运行过程中的各activity对象引用。


二、启动模式介绍及使用场景

声明:下方各流程图均来源于https://blog.csdn.net/zy_jibai/article/details/80587083,有兴趣可以去看看。


Standard:标准模式,不声明该属性时,默认模式。启动activity时,将activity对象放置到任务栈的栈顶,如果不存在任务栈,首先创建一个任务栈;正常创建、销毁activity。

优点:便于activity的正常管理,逻辑相对简单;

缺点:同一activity可能被创建多次,不利于activity的重用,造成资源的浪费;

edae91db87e04de3a3890aa5e8862835

SingleTop:单顶模式,当activity存在于栈顶时,不会重构activity,而是调用onNewIntent(Intent intent)方法加载之前的页面;当activity不存在于栈顶,就会重新构建activity,并将其显示到栈顶;

673968592b1b4fb593d0eb639804d93e

优点:在栈顶时,重用栈顶activity;

缺点:activity可能存在多次创建;

适用场景:①来推送消息后,点击消息跳转到详情界面,防止创建多个界面;②即时通讯的聊天界面等。

d265c9eeec3847e99da2e9b92971840a

SingleTask:单任务栈模式;当activity不存在于任务栈,进行创建;当存在于任务栈中,即移除其顶部的activity,将其移到栈顶,显示出来。

优点:actiivity重用,只存在一个activity;节约内存,用户体验好;

缺点:移除其他activity,不利用管理;

d6c968d459f44b0c8ed9665e8f4129de

适用范围:应用的启动界面,防止其他应用在调启时,创建多个应用界面;如:网易新闻的新闻界面(MainActivity)

做浏览器、微博之类的应用,比如其他App需要打开我们的浏览器页面,就可以配置他为singleTask模式,保证他只有一个唯一实例,节约内存同时按下返回键后的感官也更顺畅。但是需要注意,提供给人调用的页面最好是栈底元素。

73ab0edb465d4c8fac710f581ebcfbc1

SingleInstance:单实例模式,创建的activity位于新的task中。如果已经创建过目标Activity实例,则不会创建新的Task,而是将以前创建过的Activity唤醒。

优点:

1. 以singleInstance模式启动的Activity具有全局唯一性,即整个系统中只会存在一个这样的实例。

2. 以singleInstance模式启动的Activity在整个系统中是单例的,如果在启动这样的Activiyt时,已经存在了一个实例,那么会把它所在的任务调度到前台,重用这个实例。

3. 以singleInstance模式启动的Activity具有独占性,即它会独自占用一个任务,被他开启的任何activity都会运行在其他任务中。

4. 被singleInstance模式的Activity开启的其他activity,能够在新的任务中启动,但不一定开启新的任务,也可能在已有的一个任务中开启。

原文:https://blog.csdn.net/zivensonice/article/details/51569502

缺点:不利于回收利用资源;

f47d424457684c8aa826ab550a08b615

适用场景:需要全局只创建一个activity的场景,如,网易新闻的锁屏界面、手机来电界面等;

ede0e5fd85d649478cf8046a8fec8c15
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值