学习
实践
活动
工具
TVP
写文章

Android开发之Activity的生命周期以及加载模式

(1).onCreate()方法:Activity首次出现创建时会调用该方法,在之前的Demo中我们在此方法中加载Activity的布局和或控件并关联事件。 四.Activity加载模式 Activity的启用模式也较为简单,它会在活动切换时用到。 Activity的启动模式分为四种,standard、singleTop、singleTask、singleInstance模式。接下来将为大家详细的介绍一下这几种加载模式Activity加载模式可以在配置文件AndroidManifest.xml中进行配置,配置项为android:launchMode具体如下图所示: ? 下方ThirdActivity跳转到一个加载模式为singleInstance的Activity中。 ? 今天的Activity生命周期就先到这儿,相关内容会在下篇博客中进行更新。

33070

ActivityActivity的启动模式:SingleTask

概述 总是看到Activity的四种启动模式:Standard,SingleTask,SingleTop,SingleInstance,而且都是借助于官方文档理解的。 在Android官方文档中,对“singleTask”模式解释的是:The system creates a new task and instaniates the activity at the root 总结 “singleTask”模式启动的Activity,在启动时,会先在系统中查找属性值affinity等于它的属性值taskAffinity的任务是否存在:如果存在,则在该任务中启动;如果不存在,则会在新任务中启动 因此,如果想要设置“singleTask”启动模式Activity在新的任务中启动,就要为它设置一个独立的taskAffinity的值。 如果设置了“singleTask”启动模式Activity不是在新的任务中启动的,它会在已有的任务中查看是否已经存在相应的Activity实例,如果存在,会调用该实例的onNewIntent,并且会把位于这个

7620
  • 广告
    关闭

    年末·限时回馈

    热卖云产品年终特惠,2核2G轻量应用服务器6.58元/月起,更多上云必备产品助力您轻松上云

  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Activity启动模式

    一、LaunchMode 预备知识:任务栈(回退栈),后进先出 standard(标准模式):默认启动模式,每创建一个新Activity,都会产生一个新的Activity实例并且放入相应的任务栈中。 注意的是,该模式只使用于新Activity已经位于栈顶。否则的话还是会创建新的Activity并且进行压栈操作。 singleInstance(单实例模式):加强的singleTask模式,除了具有singTask的一切特性外,还加强了一点,就是具有此模式Activity只能单独的位于一个任务栈中。 由于启动模式为“singleTask”和 “singleInstance”的Activity只能位于Task的底部,因此,重新宿主只能限于“standard”和“singleTop”模式。 注:在Intent中设置标志位来指定启动模式 比 通过AndroidMenifest.xml为Activity指定启动模式 优先级高。

    50220

    Activity的启动模式

    Activity的四种启动模式 standard:标准模式 标准模式,这也是系统的默认模式。每次启动一个Activity都会重新创建一个新的实例,不管这个实例是否已经存在。 在这种模式下,谁启动了这个Activity,那么这个Activity就运行在启动它的那个Activity所在的栈中。 singleTask:栈内复用模式 栈内复用模式,这是一种单实例模式,在这种模式下,只要Activity在一个栈中存在,那么多次启动此Activity都不会创建实例,和singleTop一样,系统也会回调其 Activity的Flags 比较常用的几个Flag FLAG_ACTIVITY_NEW_TASK 这个标记位作用是指定Activity的启动模式为“singleTask”启动模式,其效果和XML中指定该启动模式相同 FLAG_ACTIVITY_SINGLE_TOP 这个标记位作用是指定Activity的启动模式为“singleTop”启动模式,其效果和XML中指定该启动模式相同。

    33340

    activity的启动模式

    再次点击第二个界面,任务栈里面再次加入activity2 当点击返回的时候,最后一个先弹出,依次弹出,这是标准情况下,standard模式 在一些特殊的情况下,为了避免糟糕的用户体验,如果发现任务栈的栈顶存在这个 activity了,那么久不重复创建了,这种模式是singleTop的启动模式,单一顶部 清单文件中,activity节点下 设置启动模式android:launchMode=”singleTop” 应用场景 :浏览器的加入书签界面,发短信界面 作用:避免同一个界面被重复的开启 singleTask模式,单一任务栈,通过点击返回键来进行测试这个与singleTop模式的区别 开启一个activity的是,检查任务栈 ,如果已经存在了,那么就清空此activity上面的所有其他界面,复用此界面 应用场景:浏览器应用,查找清单文件看到BrowerActivity是这个模式,这个activity比较笨重,因为他是用c写的 singleInstance模式,单一实例,当界面启动开启任务栈以后,点击这个界面,又会创建出来一个单独的任务栈,只存放着这一个activity实例,如果这个activity开启,就会把这个activity

    23910

    Activity的启动模式

    activity的启动模式是Android的基础知识,这里就直入主题了。 Activity启动模式 standard模式 standard是activity的默认启动模式,每次activity启动时,都会创建一个新的实例化对象。 ActivityA为standard模式 singleTop模式 在启动activity之前会检查栈顶activity是否为启动的activity实例对象,如果是那么触发activity的onNewIntent ActivityB为singleTop模式 singleTask模式 和singleTop的区别在与,启动activity之前不仅检查栈顶activity是否为启动的activity实例对象,而是检查整个堆栈中是否有该 如果有的话,会触发activity的onNewIntent回调并将该实例对象置于栈顶(将他之上的activity销毁) ActivityC为singleTask模式 singleInstance模式

    9710

    Activity启动模式解析

    Activity启动模式 关于Activity的LaunchMode大家一定知道有以下四种: standard(标准模式) singleTop(栈顶复用模式) singleTask(栈内复用模式) singleInsance singleTask 栈内复用模式 这是个单实例模式,我们启动Activity一般会默认创建一个栈,属性于包名相同,这个是我们的默认栈,通过standard启动的Activity都会放入这个栈内。 singleInstance 单实例模式 这个启动模式跟singleTask有点类似,但它们之间的区别是,singleInstance指定的栈只能存放一个Activity,这个Activity是全局唯一的 总结 通过上面的对启动的模式的讲解,相信大家已经对Activity的栈管理有了一定的认识,我们在实际开发过程中,就可以通过使用启动模式来满足我们特殊的场景,比如我们通过通知栏启动一个Activity,就可以指定为 以后面试官问道关于Activity的启动模式,宝宝再也不怕啦。

    19430

    Activity启动模式记录

    SingleTop–在当前栈为自己的时候只能启动一次 一个栈 SingleTask–只能启动一次 在一个栈 SingleInstance–一个实例存在不同栈 standard标准模式 每次启动都一个 Activity都会重新创建一个新的实例 singleTop栈顶复用模式 如果在任务栈顶那么Activity不会重建 singleTask栈内复用模式 单实例模式 singleInstance单实例模式 启动后新创建一个任务栈 <activity android:name=".MainActivity" android:configChanges="screenLayout" android new Intent(); intent.setClass(MainActivity.this,SecondActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK

    9720

    Activity的启动模式

    layout_width="wrap_content" android:layout_height="wrap_content" android:text="standard模式启动的 inflate(R.menu.main, menu); return true; } } 我们在AndroidManifest.xml文件中注册的MainActivity启动模式 Activity ok,关于Activity的启动模式就这么多。 最后总结一下4种启动模式: standard:不管要启动的Activity是否已经存在与活动栈,都会创建一个新的Activity对象处于活动栈栈顶。 singleTask:如果要启动的Activity对象存在活动栈,那么系统将不会创建新的Activity对象,而是会把活动栈中处于这个要启动的Activity对象上面的所有Activity对象出栈(被系统回收

    27010

    android4种activity启动模式_简述activity的启动模式

    测试应用主activityA使用默认启动模式 ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities) Display #0 (activities ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities) Display #0 (activities from top to bottom Hist #0: ActivityRecord{a0bc5f0 u0 com.wp.launchmode/.ActivityA t27} Stack #0: 打开activityC ACTIVITY MANAGER ACTIVITIES (dumpsys activity activities) Display #0 (activities from top to bottom): Stack MANAGER ACTIVITIES (dumpsys activity activities) Display #0 (activities from top to bottom): Stack

    7330

    Activity启动模式之FLAG_ACTIVITY_CLEAR_TOP

    关于Android的Intent.FLAG_ACTIVITY_CLEAR_TOP 如果设置,并且这个Activity已经在当前的Task中运行, 因此,不再是重新启动一个这个Activity的实例,而是在这个 Activity上方的所有Activity都将 关闭然后这个Intent会作为一个新的Intent投递到老的Activity(现在位于顶端)中。 如果它的启动模式声明为“multiple”(默认值),并且你没有在这个Intent中设置FLAG_ACTIVITY_SINGLE_TOP 标志那么它将关闭然后重新创建;对于其它的启动模式,或者在这个Intent 中设置FLAG_ACTIVITY_SINGLE_TOP 标志,都将把这个Intent投递到当前这个实例的onNewIntent()中 这个启动模式还可以与FLAG_ACTIVITY_NEW_TASK结合 ,结束该对象之上的所有Activity回到该Activity上 上面当A跳C的时候不满足此条件。

    8930

    Activity启动模式(launchMode)详解

    1.1 activity启动模式之standard standaed模式activity默认的模式,但为了演示,我们在功能清单中写一下。 该模式的特点就是启动一个activity就会在栈中按先进后出的木桶原则创建一个activity。 这就是stanard模式每次启动都创建新的Activity. 1.2activity启动模式之singleTop 还是刚才的代码,我们启动模式改为 android:launchMode="singleTop 我们可以利用这个启动模式的特点进行Activity栈中的移除工作。 1.4activity启动模式之singleInstance 这个启动模式呢,比如我们有三个Activity,分别是A(standard),B(SingleInstance),C(standard),

    34120

    Android Activity的启动模式

    简介 Activity有四种加载模式 standard singleTop singleTask singleInstance 设置方式 android:launchMode="singleTask" 就会变成 ABC 假设 栈结构为 ABCD 再打开C C为singleTop 就会变成 ABCDC singleTask: Task内单例模式 采用该加载模式时,Activity在同一个Task内只有一个实例 当系统采用singleTask模式加载Activity时,又分为以下 三种情况: (1)如果将要启动的Activity不存在,那么系统将会创建该 实例,并将其加入Task栈顶 (2)如果将要启动的Activity Task,从而使得该目标Activity位于栈顶 ---- 假设 栈结构为 ABC 再打开B B为singleTask 就会变成 AB singleInstance: 全局单例模式 在此种加载模式下, singleInstance模式加载Activity时,又分为以下 两种情况: (1)如果将要启动的Activity不存在,那么系统将会先创建一个 全新的Task,再创建目标Activity实例并将该Activity

    29430

    android入门 — Activity启动模式

    1.standard模式   standard模式是系统的默认启动方式,每次激活Activity都会创建Activity,并放在任务栈中。    ,之后每按一次按钮,都会有一个新的activity被创建(编号改变),按下back键,会从右到左变化。 2.singleTop模式   如果在任务栈顶部正好存在该activity的实例,就重用这个实例,而不会重新创建新的activity对象,不过它会调用onNewIntent()方法。    3.singleTask模式    每次活动启动时系统首先在返回栈中检查是否存在该活动的实例,如果存在,就把这个活动之上的所有活动出栈,如果没有发现活动,就需要创建一个新的activity。 4.singleInstance模式(单例模式)   在这种模式下,会有一个单独的返回栈来管理这个活动,不管哪个应用程序来访问这个活动,都共用一个返回栈。

    50670

    android_activity_启动模式

    standard:标准模式,也是默认模式。每当我们启动一个Activity,系统就会相应的创建一个实例,不管这个实例是否已经存在。 singleTop:栈顶复用模式,如果要启动的Activity处于栈的顶部,那么此时系统不会创建新的实例,而是直接打开此页面,同时它的onNewIntent()方法会被执行,可以通过Intent进行传值 singleTask:栈内复用模式,如果栈中存在这个Activity的实例就会复用这个Activity,不管它是否位于栈顶,复用时,会将它上面的Activity全部出栈,因为singleTask本身自带 singleInstance:单实例模式,该模式具备singleTask模式的所有特性外,与它的区别就是,这种模式下的Activity会单独占用一个Task栈,具有全局唯一性。 以singleInstance模式启动的Activity在整个系统中是单例的,如果在启动这样的Activiyt时,已经存在了一个实例,那么会把它所在的任务调度到前台,重用这个实例。

    6620

    Activity加载view6.0源码分析---setContentView

    在研究activity组件的view加载之前,先整体认 识下activity的布局,有助于更好的去理解setContentView方法 Chapter One:认识Activity的布局 对于研究布局这种东西 布局的最外层view,包括标题栏和activity的内容布局 mContentParent:activity的内容布局,继承自ViewGroup,用来加载存放activity的view树,如果没有标题栏 对activity的布局大致有个了解之后,就开始去分析activity启动后加载view的流程 Chapter Two:activity加载view布局----始于setContentView          对于activity的布局的加载大致分为两部分,一部分是加载view,另一部分是将view绑定到应用窗口Window。 对于 activity的启动过程留待以后进行分析,现在分析加载view---始于Activity.java的setContentView方法,看一下加载view的流程。 ?

    39780

    启动Activity的实例并加载其布局

    app-> java->com.jay.helloworld->MainActivity 这是主Activity。 它是应用的入口,当您构建和运行应用时,系统会启动此Activity的实例并加载其布局, public class MainActivity extends AppCompatActivity { 省略部分代码 } MainActivity 继承于AppCompatActivity,并重写了onCreate方法,AppCompatActivity类是Android Studio中默认的构建自定义Activity 4. app->res->layout->activity_main.xml 此XML文件定义了activity界面(UI)的布局,整体布局都是采用CoordinatorLayout布局,这个布局是support

    17700

    Activity启动模式singleTask的理解

    Activity启动模式singleTask的理解 2. Task与Activity栈 3. singleTask设置方式 4. singleTask的意义(作用) 4.1. 举例说明 4.2. Activity启动模式singleTask的理解 2. Task与Activity栈 Task是一些Activity的集合,以Activity栈的形式存放。 那么,真的和standard模式一样吗? 还是有不同的,不然弄这个模式干嘛。 不同之处,用下面的例子说明: 4.3. ,其余Activity都不做任何操作,保持默认,即standard模式 那么跳到SecondeActivity后,当前的Activity栈情况从顶到底部是: SecondeActivity、MainActivity 小结 被标记为singleTask的Activity,在启动的时候如果当前没有实例,就和standard模式一样,直接压栈到当前activity上;如果已经有实例了,就把该目标Activity实例上面的

    8420

    Activity任务栈和启动模式

    先启动的Activity压在栈底,后启动的Activity放在找顶,通过启动模式可以控制Activity在任务栈中的加载情况。本节将针对Activity的任务栈和启动模式进行详细的讲解。 二、Activity启动模式 在实际开发中,应根据特定的需求为每个Activity指定恰当的启动模式。 01standard模式 standard是Activity默认的启动模式,在不指定Activity启动模式的情况下,所有Activity 使用的都是standard模式。 03singleTask模式 如果希望Activity在整个应用程序中只存在 一个实例,可以使用singleTask模式,当Activity 的启动模式指定为singleTask,每次启动该Activity singlelnstance模式加载Activity时,无论从哪个任务栈中启动该Activity,只会创建一个Activity实例,并且会使用一个全新的任务栈来装载该Activity实例。

    38660

    android activity singletask,Android Activity启动模式之singleTask实例详解

    本文实例分析了Android Activity启动模式之singleTask。 分享给大家供大家参考,具体如下: 前面的文章介绍了Android 活动Activity的启动模式:standard 和singleTop 。 本文继续介绍Activity的下一个启动模式:singleTask。 如果再次在主活动中点击按钮进入MyActivity1活动,此时会创建MyActivity1实例,再次返回,见日志如下: 这正是Activity启动模式singleTask的特性。 更多关于Android Activity相关内容感兴趣的读者可查看本站专题:《Android编程之activity操作技巧总结》 希望本文所述对大家Android程序设计有所帮助。

    8360

    扫码关注腾讯云开发者

    领取腾讯云代金券