详解Android开发中Activity的四种launchMode

千金一刻莫空度,老大无成空自伤。这篇文章主要讲述详解Android开发中Activity的四种launchMode相关的知识,希望能为你提供帮助。
Activity栈主要用于管理Activity的切换。当使用Intent跳转至某个目标Activity,需要根据目标Activity的加载模式来加载。
Activity一共有以下四种launchMode:
1.standard:默认,每次使用Intent跳转到目标Activity时都创建一个新的实例。坏处是每次进入都要创建新的实例,执行OnCreate方法。

详解Android开发中Activity的四种launchMode

文章图片

2.singleTop:如果要跳转的目标Activity正好在task的顶部(说明当前肯定不在目标task里,例如我在微信首页,然后想使用Intent跳转到InnoXYZ应用的首页,那么加入InnoXYZ首页正好在InnoXYZ的task顶部,就直接跳转而不会创建实例),那么就直接跳转过去而不会创建新的。(例子,当前在Home Screen, 收到一条微信首页的推送,而此时task栈里的微信task里的Activity栈里的最顶部正好就是微信首页,那么点击推送就直接进入该实例而不会创建新的实例)
详解Android开发中Activity的四种launchMode

文章图片

3.singleTask:会在一个新的task中产生这个实例,以后每次调用都会使用这个,不会去产生新的实例了。
4.singleInstance:是其所在栈的唯一activity,它会每次都被重用。
launchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个task里。这里简单介绍一下task的概念,task是一个具有栈结构的对象,一个task可以管理多个Activity,启动一个应用,也就创建一个与之对应的task。
我们可以在androidManifest.xml配置< activity> 的android:launchMode属性为以上四种之一即可。
 
 
android:exported
  1. 在Activity中该属性用来标示:当前Activity是否可以被另一个Application的组件启动:true允许被启动;false不允许被启动。
  2. android:exported  是Android中的四大组件  Activity,Service,Provider,Receiver  四大组件中都会有的一个属性。
  3. 【详解Android开发中Activity的四种launchMode】总体来说它的主要作用是:是否支持其它应用调用当前组件。

    推荐阅读