zoukankan      html  css  js  c++  java
  • 详解Android开发中Activity的四种launchMode

    Activity栈主要用于管理Activity的切换。当使用Intent跳转至某个目标Activity,需要根据目标Activity的加载模式来加载。

    Activity一共有以下四种launchMode:

    1.standard:默认,每次使用Intent跳转到目标Activity时都创建一个新的实例。坏处是每次进入都要创建新的实例,执行OnCreate方法。

    201638150942001.jpg (1240×930)

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

    201638151101876.jpg (1240×930)

    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. 总体来说它的主要作用是:是否支持其它应用调用当前组件。

    <intent-filter>

    意图过滤器说白了就是在你启动程序时,最先启动的是那个activity。所以说<intent-filter>是必须有的。 否则android不知道先启动谁。
     
    追问
    <action android:name="android.intent.action.MAIN" />,意思是这个MainActivity在第一位就是先启动MainActivity??
     
    追答
    <activity
    android:name=".MainActivity"
    android:label="@string/app_name" >
    <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
    </activity>
    <activity android:name="android.app.AliasActivity">
    </activity>
    像这个代码里有两个activity, 第一个有 <intent-filter>,第二个没有,所以说先启动的就是第一个,”
  • 相关阅读:
    UVA 10618 Tango Tango Insurrection
    UVA 10118 Free Candies
    HDU 1024 Max Sum Plus Plus
    POJ 1984 Navigation Nightmare
    CODEVS 3546 矩阵链乘法
    UVA 1625 Color Length
    UVA 1347 Tour
    UVA 437 The Tower of Babylon
    UVA 1622 Robot
    UVA127-"Accordian" Patience(模拟)
  • 原文地址:https://www.cnblogs.com/to-creat/p/5962022.html
Copyright © 2011-2022 走看看