`
MyEyeOfJava
  • 浏览: 1152204 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
7af2d6ca-4fe1-3e9a-be85-3f65f7120bd0
测试开发
浏览量:71172
533896eb-dd7b-3cde-b4d3-cc1ce02c1c14
晨记
浏览量:0
社区版块
存档分类
最新评论

[Android]Android Activity 启动模式详解

阅读更多

一句话区别:standard,需要即new对象,不管对象是否存在,single模式可以复用对象。运行模式与线程和 进程均没有什么关系,与使用场景有关系。

 

最近有群里的朋友问我 Activity的四种启动模式分别是什么意思? 当初因为项目比较忙,草草的解释了下, Api文档中说的也只是一般,在这里就小记一下吧,以便有更多的朋友对Activity启动模式了解深刻一点。度娘的时候 就可以找得到不需要在 问人了。如果不了解的话,简单的几句也说不清晰。

    Activity 四种启动模式,分别为:standard 、singleTop、singleTask、singleInstance。

    一 :

          standard 模式:这个就没有什么好说的了,Android默认Activity启动的模式 就是 standard,如果有3个 Activity,Act1,Act2,Act3, 如果从Act1 启动到Act2 ,在启动到Act3,那么Android 的任务栈(task stack)分别为 Act1、Act2、Act3,Act3 在栈顶,如果此时按手机返回键,则需要返回3次才能返回到桌面(假设是从桌面启动的demo),任务栈分销毁掉 Act3,Act2,最后Act1 。

 

   二 :

        singleTop模式:

           实验效果:

           singleTop模式:该启动模式和standard模式相差不多,任务栈分配也很相似,如:现有 act1,act 2,在act2 清单文件中配置 android:launchMode="singleTop" ,其他都是默认standard 模式, 若从桌面启动该实验demo,从act 1,到act2 ,那么任务栈则分配为,act1,act2,此时该任务栈和 standard 模式任务栈分配则完全相同,接下来则说明不同的地方,如果在act2 界面中 启动 到act1, 此时的 任务栈 情况则为 act1,act2,act1,在由act1 启动到act2,在启动到act2,进行多次启动,(在act2界面)任务栈的情况则为,act1,act2,act1,act2,栈顶的act2 则不会重新创建,则会复用act2 该 Activit, 依次类推。

          理论知识:

                 singleTop,如果任务栈的栈顶元素是要被激活的组件,不会创建新的Activity放在任务栈,而是会复用栈顶的Activity。 如果发现栈顶的元素不是要激活的Activity,就会创建新的Activity 放置到任务栈里面

         

          singleTop模式应用场景 :

                 App程序中(或浏览器中)保存的书签,假如用户看到一个界面保存自己喜欢的标签,假如要保存10个,这个时候用户在返回键的时候,则会返回10次才能返回到App应用中, Android下singleTop 则解决该问题。

三  

           singleTask 模式 :

               实验效果 相差不大,实验内容就不多说了,自己可以写个小demo,两个Activity,每个Activiy 有两个button,可以相互启动 打日志去动手查看,会理解更加深刻,可以参照着 SingleTop模式去实验,以下只是讲解下 和SingleTop的区别:

            区别如下:(理论知识)

                  SingleTask 操作模式,一般和singleTop操作模式类似,如果他发现任务栈里面已经有了要启动的这个Activity,他会清空这个Activity所在的任务栈上面的所有Activiy,然后直接复用这个已经存在的Activity 。

            应用场景:

                    如果一个App中,有一个功能需要加载网页内容 ,打开一个 browserActiviy现在网页内容,则内存开销非常大,首先要初始化webkit /c++ 嵌入式浏览器内核broweractivity 配置了singleTask,空间换时间,使用该模式可以节省内存开销。

四 :   

            singleinstance 模式 :

             直接理论知识吧”:

                    singleInstance操作模式会新开启一个任务栈,跟其他普通Activity不是 同一个任务栈,比较牛,他的模式流程是 首先要新开启一个新的任务栈把要激活的Activity放置到新的 任务栈里,这个任务栈里面只有且 只有一个实例,也比较极端吧。说比较极端也跟他的应用场景有关系。

            应用场景 :

                 App各种词典,向有道词典,什么金山词典,说极端是因为不想被放置到同一个任务栈里面,它是全局的系统程序应用,达到节省内存的使用目的。 

 

         说这些到底有神马用呢,因为啊,大部分公司面试的时候 都好问这一口,问什么鸟问题呢,大致是要问你,Android的启动模式跟进程 有没有关系,你说有什么关系嘞,鸟毛的关系都木有,进程是进程, 任务栈是管理Activity的,你说有关系嘛,当然了没关系就是有关系咯,有关系就是没关系咯,但是同时呢,这些启动模式也相当的重要哇,这篇文章只是适用于新盆友使用咯,当然老朋友也可以看看啊,提提意见啥的,大家一起进步,但愿能帮助一些猿古人类吧,哈哈!

分享到:
评论

相关推荐

    android activity启动模式详解

    在Android应用开发中,Activity是用户界面的基本单元,它的启动模式是决定Activity如何启动和运行的关键因素。了解和掌握不同的Activity启动模式对于优化应用程序的行为至关重要。本文将详细讲解四种主要的Activity...

    Android中Activity四种启动模式和taskAffinity属性详解-Rong

    为了管理Activity的生命周期和用户界面的流程,Android系统提供了一系列的机制和属性,其中包括四种不同的Activity启动模式以及taskAffinity属性。这些启动模式和属性共同作用于Activity所属的任务栈(Task)和后退...

    android Activity的启动模式 作用简析+demo详解

    此篇博客意在让对启动模式不了解的开发者对其有一个较为形象的认识,至于深入探究,笔者还是推荐去看任玉刚前辈所写的《android开发艺术探索》了。 网上对Activity的启动模式讲解的博客有很多,但是大部分都需要掌握...

    Android Activity 的四种启动模式 lunchMode 和 Intent.setFlags()

    ### Android Activity 的四种启动模式与 Intent.setFlags()详解 #### 一、Android Activity 四种启动模式 在 Android 应用开发中,Activity 是构成应用的基本单元之一,它负责显示用户界面并处理用户交互。为了更...

    android课件6Activity 详解

    Activity 详解 Activity 详解

    详解 Android 的 Activity 组件

    ### 详解 Android 的 Activity 组件 #### 概述 在Android开发中,`Activity`是四大组件之一,它是用户界面的基础单位,也是Android应用中最重要的组成部分之一。一个Android应用通常由多个`Activity`组成,每个`...

    浅谈android性能优化之启动过程(冷启动和热启动)

    Android 应用程序启动优化之冷启动和热启动详解 一、应用程序启动方式 Android 应用程序的启动方式可以分为两种:冷启动和热启动。 1. 冷启动:当启动应用程序时,后台没有该应用程序的进程,这时系统会重新创建...

    Android Activity启动模式之singleTop实例详解

    在前面文章《Android Activity启动模式之standard实例详解》中,我们介绍了活动的默认启动模式standard,本文继续介绍Activity的singleTop模式。 singleTop模式:当Activity的活动模式设置为singleTop时,在启动活动...

    Android Activity启动模式之standard实例详解

    本文实例讲述了Android Activity启动模式之standard。分享给大家供大家参考,具体如下: Android的活动是通过任务Task来进行管理的,一个任务就是一组放在栈里的活动的集合,即所谓的返回栈(Back Stack)。栈具有...

    activity启动动画、android5.0共享元素启动动画,详解demo

    在Android开发中,Activity的启动动画和Android 5.0(Lollipop)引入的共享元素启动动画是提升用户体验的关键技术。下面将详细讲解这两个概念及其应用。 ### Activity启动动画 Activity启动动画是Android中用于改变...

    android启动以及activity生命周期分析

    ### Android启动及Activity生命周期分析 在Android开发过程中,理解应用程序如何启动及Activity的生命周期是非常重要的。这不仅有助于我们更好地管理程序的状态,还能帮助我们在遇到内存泄漏等问题时进行快速定位和...

    android各组件详解-activity

    ### Android各组件详解:Activity #### 一、Activity概述与生命周期 **Activity**是Android四大组件之一,负责处理用户交互并展示界面。每个Activity都代表一个屏幕,可以包含多个视图(View)来构建用户界面。...

    activity启动模式

    ### Activity启动模式详解 #### 一、Android进程与线程模型概述 在深入了解Activity启动模式之前,我们首先需要对Android的进程与线程模型有一个基本的认识。这将有助于更好地理解Activity是如何在不同的环境下...

Global site tag (gtag.js) - Google Analytics