Android Activity启动模式】的更多相关文章

最近有群里的朋友问我 Activity的四种启动模式分别是什么意思? 当初因为项目比较忙,草草的解释了下, Api文档中说的也只是一般,在这里就小记一下吧,以便有更多的朋友对Activity启动模式了解深刻一点.度娘的时候 就可以找得到不需要在 问人了.如果不了解的话,简单的几句也说不清晰. Activity 四种启动模式,分别为:standard .singleTop.singleTask.singleInstance. 一 : standard 模式:这个就没有什么好说的了,Android默…
Activity启动模式      .概念      Activity启动模式定义了Activity启动的规则,它决定着Activity的实例创建与重用与否    .属性     Activity的启动模式在menifest.xml中的<activity>标签中设置,属性为launchMode    .分类     Activity的启动模式分为四类: standard . singleTop . singleTask . singleInstance     .备注     Android采…
在了解了基本的Activity的生命周期后,我们能够很好的在一个Activity上面做相关的业务.但是这是不够的,因为Android通过任务栈来保存整个APP的Activity,合理的调度任务栈才能够提供良好的用户体验.而栈的结构,相信大家都知道——先进后出的线性表,新启动的Activity会位于任务栈的栈顶,处于活动的状态,其他的Activity虽然不在活动状态了,但是依然保留在任务栈中,处于停止的状态(也就是onStop被触发了,但是onDestory没有被触发). 一般情况下,返回键和调用…
<activity android:name=".MainActivity" android:launchMode="singleTask"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER&q…
相关的基本概念: 1.任务栈(Task)   若干个Activity的集合的栈表示一个Task.   栈不仅仅只包含自身程序的Activity,它也可以跨应用包含其他应用的Activity,这样有利于保障用户体验,维护用户操作体验上的完整性.例如:微信ActivityA 分享文章到QQActivityB,两个activity是存在于不同app中的,但是被系统放在一个任务中,分享后,用户按back键返回,可以返回到原来的微信Activity A中,这就确保了用户体验.   2.查看当前系统的任务栈…
先看一下standard启动模式的说明: 仅仅有一个实例.在同一个应用程序中启动他的时候.若不存在此Activity实例.则会在当前栈顶创建一个新的实例.若存在,则会把栈中在其上的其他Activity实例销毁掉,并调用此实例的OnNewIntent方法,假设实在别的应用实例中启动它.则会新建一个栈,并在该栈中启动这个Activity,然后我在这个Activity实例中再打开新的Activity这个新的实例会在一个栈中 我们首先通过一个实例理解这句:仅仅有一个实例.在同一个应用程序中启动他的时候,…
韩梦飞沙  韩亚飞  313134555@qq.com  yue31313  han_meng_fei_sha 1,标准的, 2,单个 顶部 3,单个 任务 4,单个 实例 标准的 就是 每启动一次这个 活动, 都会 在栈 中新建一个 活动对象. 什么是 栈,  栈 是 先进后出的一种 数据结构. 活动对象的存储 是 栈 结构存储的. 单个顶部 是  每次启动这个活动, 如果这个栈里面 最后那个已经是 这个活动, 就直接让它呈现出来,如果不是,就新建. 栈顶 就是 最后进入的那个位置. 栈顶 到…
在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. Android总Activity的启动模式分为四种: Activity启动模式设置: <activity android:name=".MainActivity"android:launchMode="standard" /> Activity的四种启动模式:…
[转]Android总结篇系列:Activity启动模式(lauchMode) 本来想针对Activity中的启动模式写篇文章的,后来网上发现有人已经总结的相当好了,在此直接引用过来,并加上自己的一些理解,在此感谢原作者. 文章地址: http://blog.csdn.net/liuhe688/article/details/6754323 ------------------------------------------------------------------------------…
本文主要分析Activity的启动模式及使用场景. 一.Activity启动模式浅析 1.standard 标准模式,系统默认的启动模式.在启动Activity时,系统总是创建一个新的Activity实例.其缺点是:复用性差.占用内存,当Activity已经在栈顶时,还是会创建实例. 2.singleTop 这种模式可以实现栈顶复用的效果. 如果目标Activity已经存在于栈顶,则调用实例的 onNewIntent,否则创建一个新的实例,可以用于通知启动的内容显示,例如新闻客户端的内容页面.信…
Android中启动模式(launchMode)分为standard, singleTop, singleTask, singleInstance四种,可通过AndroidManifest.xml文件设置某个activity的启动模式.接下来会一一探索启动模式对app行为的影响.用到的app和activity构成图如下,每次改变launchMode都只针对App2的SecondActivity: Standard App2内部跳转从Main到Second再到Third再到Second,可以看到日…
 http://blog.csdn.net/vipzjyno1/article/details/25463457    Android启动模式Flags栈Task   目录(?)[+] 什么是栈 栈 定义栈Stack 栈的操作压栈弹栈 Activity中的栈 Task Activity启动模式 Activity栈和Task联系 Intent Flags Activity相关属性taskAffinity      在学习Android的过程中,Intent是我们最常用Android用于进程内或进程…
1. 基本介绍 大家平时只要懂一点Android知识的话,都一定会知道,一个应用的组成,往往包含了许多的activity组件,每个activity都应该围绕用户的特定动作进行跳转设计.比如说,一个电话通讯录的应用可能有一个总体展示电话录上所有存储的姓名的activity,当用户选择指定的姓名时,可以启动另一个新的activity用来展示选中此姓名的详细内容.当然,一个activity也可以用来打开同一台手机但存在在其它应用的activity,比如,你的应用想要发送一份邮件时,可以定义一个inte…
http://blog.csdn.net/vipzjyno1/article/details/25463457    在学习Android的过程中,Intent是我们最常用Android用于进程内或进程间通信的机制,其底层的通信是以Binder机制实现的,在物理层则是通过共享内存的方式实现的.     Intent主要用于2种情景下:(1)发起意图  (2)广播     它的属性有:ComponentName,action,data,category,extras,flags等,通常情况下,进行…
启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的<Activity>标签的android:launchMode属性设置: 启动模式有4种,分别为standard.singleTop.singleTask.singleInstance: Activity启动模式设置: <activity android:name=".MainActivity" android:launchMode="standard"…
Activity启动模式 android:launchMode="singleTask" * Standard 每次都创建一个新实例 -- TaskID不变,ActivityID改变 * SingleTop 此时该Activity位于栈顶,不再新建实例 如不处于栈顶,新建一个实例 * SingleTask 一个Activity只会新建一个实例 A-B-A-退出 * SingleInstance Activity享有独立的任务栈,一个任务栈放一个Activity 每次跳转,TaskID和…
原文:https://blog.csdn.net/youhongyan/article/details/64151922 一.Activity启动模式的设置在AndroidManifest.xml文件中,通过配置Activity的属性android:launchMode=""设置. 1. Standard模式(默认) 我们平时直接创建的Activity都是这种模式的Activity,这种模式的Activity的特点是:只要你创建了Activity实例,一旦激活该Activity,则会向…
Activity启动模式(lauchMode) 本来想针对Activity中的启动模式写篇文章的,后来网上发现有人已经总结的相当好了,在此直接引用过来,并加上自己的一些理解,在此感谢原作者. 文章地址: http://blog.csdn.net/liuhe688/article/details/6754323 ----------------------------------------------------------------------------------------------…
前言 Activity是Android四大组件的老大,我们对它的生命周期方法调用顺序都烂熟于心了,可是这些生命周期方法到底是怎么调用的呢?在启动它的时候会用到startActivty这个方法,但是这个方法的背后是怎样来实现的呢,来看看源码一探究竟(API23,无关代码省略) 应用进程启动activity流程 首先来到startActivity(Intent intent): @Override public void startActivity(Intent intent) { this.sta…
Android中的启动模式(下) 在这篇文章中,我会继续跟大家分享有关于Android中启动模式的相关知识.当然,如果对这个启动模式还不完全了解或者没有听过的话,可以先看看我之前写的有关于这个知识点的入门篇Android的启动模式(上).好了,言归正传,在上一篇已经介绍过,activity在栈中默认不能重排,因此,应用中的一个activity可能被多次实例化并且压入同一个栈中,如图所示: 如果此时使用back键返回,activity的每个实例都将会按照打开的顺序重新出现.这势必会导致用户生体验效…
activity启动模式之singleInstance 一.简介 Log.d("C2", getTaskId()+"");里面的getTaskId()可以获取activity栈的编号 二.代码实例 结果图: 代码: activity.C1 package activity; import com.example.activityLaunchSingleInstance.R; import android.app.Activity; import android.co…
activity启动模式之singleTask 一.简介 如果另外一个应用调用了C2,C2在栈底,如果这个程序里面再嗲用C1,C3,C2,那么这个C2就是调用onNewIntant的,C1和C3都被销毁了: 另一个程序>c2>c1>c3>c2,实际只剩:另一个程序>c2. 二.代码实例 效果图: 上面就是调用了onNewIntent方法的情况 代码: activity.C1 package activity; import com.example.activityLaunch…
activity启动模式之singleTop 一.简介 二.设置方法 在AndroidManifest.xml中将要设置为singleTop启动模式的页面进行配置 <activity android:name="activityLaunchSingleTop.ActivityB2" android:launchMode="singleTop"></activity> 三.代码实例 效果图: 代码: activityLaunchSingleTo…
activity启动模式之standard 一.简介 这种模式是默认的,不用我们自己设定 就像一只叠加在栈中 如果退出,就一个个退出,其实就是我们自己用手机的那种感受 二.代码实例 activityLaunchStandard.MainActivity package activityLaunchStandard; import com.example.activityLaunchStandard.R; import android.app.Activity; import android.co…
网上关于Activity启动模式的文章许多.可是看起来都千篇一律,看完之后我们都能理解这4种启动模式.只是官方api对singleTask这个启动模式解释有些争议,导致我事实上并没有真正理解这几种模式,特别是对实际开发究竟怎么用还是一知半解.于是花了一天时间好好研究这4种启动模式. 首当其冲应该知道Task的概念,它是我们一系列操作连贯跳转activity形成的一个activity栈,后进先出也就是说当前看到的activity在最上面,关于Task的概念老罗一篇博客说的比較清楚,引自老罗博客:…
对Activity启动模式的理解 应用场景 在已打开多个Activity应用B的前提下,应用A调用应用B后点击返回按钮,需要直接返回到A应用,而不是打开B应用的上一个Activity 一个Task可以理解为一个Activity栈,可以装载一个或多个Activity,回退和打开的顺序逻辑和基本的数据结构栈是一致的. 一个Application如果有N个Activity,这些Activity分布在M个任务栈中,那么Application的回退栈会遵循这样的原则: 首先从当前Activity在的Tas…
接上之前的分析 ++Android Activity启动流程源码全解析(1)++ 1.正在运行的Activity调用startPausingLocked 一个一个分析,先来看看startPausingLocked: final boolean startPausingLocked(boolean userLeaving, boolean uiSleeping, boolean resuming, boolean dontWait) { ...... if (prev.app != null &&a…
final int startActivityUncheckedLocked(ActivityRecord r, ActivityRecord sourceRecord, IVoiceInteractionSession voiceSession, IVoiceInteractor voiceInteractor, int startFlags, boolean doResume, Bundle options, TaskRecord inTask) { final Intent intent…
看了很多关于Activity启动模式(launchMode)和intent设置intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK);发现网上说的和我测试结果 不符. 想必大家一定看过 http://marshal.easymorse.com/archives/2950 这篇文字的解说. 我当初看完之后 觉得确实很清晰了但又看了其他人的关于结合intent的Flags 以及ActibvityAffiity属性等文章后 越来越迷糊. 现在说说我的不解 : 先…
Activity 启动模式: 1. standard: 默认启动模式,每次启动一个Activity都会重新创建一个实例: 2. singleTop: 栈顶复用模式,新Activity位于任务栈的栈顶,不会被重新创建, 同时它的onNewIntent会被调用,onCreate(),onStart()不会创建: 3. singleTask: 栈内复用模式,这是一种单例模式,具有clearTop的效果: 4. singleInstance: 单实例模式,加强的singleTask模式,Activity…