Android 初学activity的启动模式

原创 2016年08月31日 10:20:14

  今天学习了一下activity的LaunchMode,突然就想尝试一下在博客上记录一下,所以参考Android开发艺术探究,写下了这篇文章,相当于一个总结!!

首先,默认情况下,我们会发现activity会保持”后进先出“的情况,即使是启动同一个活动,也会重复创建多个实例,这显然不合理,所以提供了启动模式来处理这个问题。启动模式有四种:standard,singleTop,singleTask,singleInstance:

(1)standard:

标准模式,也就是默认的启动模式,你每启动一个activity就会创建一个实例入栈,返回的时候,会遵照“后进先出”的原则。

(2)singleTop:

栈顶复用模式,这种模式下,会判断activity是否位于任务栈的栈顶,如果位于栈顶,则不会创建新的实例,同时onNewIntent()方法会被回调,如果不位于栈顶的话,则会重新创建该activity的实例。

(3)singleTask:

栈内复用模式,相比于其他模式,这是最为复杂的一种模式。这是一种单实例模式,该模式下,如果任务栈中存在该activity的实例的话,多次启动都不会创建新的activity实例,同时也会调用onNewIntent(),实例不存在的话,则会创建新的实例。该模式同时会请求需要的任务栈,任务栈不存在的话,会先创建任务栈后,在创建activity实例入栈。singleTask具有clearTop的效果,例如,以singleTask启动activity A,在A之上的活动都会被清除出栈。

singleTask启动模式中,activity需要的任务栈是根据TaskAffinity标识名字的,该属性默认值是包名,如果单独设置的话,不能与包名相同。TaskAffinity主要与singleTask或者allowTaskReparenting属性配对使用。任务栈分为前台任务栈和后台任务栈。

当TaskAffinity与singleTask同时使用时,activity会启动在与TaskAffinity相同名字的任务栈中。当TaskAffinity与allowTaskReparenting同时使用时,allowTaskReparenting的主要作用是activity的迁移,allowTaskReparenting被设置为true的话,当从应用A启动应用B的一个活动后,当B被启动时,该活动会被从A的任务栈中转移到B的任务栈中。我还没发现有什么用!!! 

(4)singleInstance:

单实例模式,这是一种加强的singleTask,它具有singleTask的所有属性,但它单独的处于一个任务栈中,所以不会创建的新的实例,除非这个任务栈被销毁。

指定启动模式:

(1)通过AndroidManifest.xml指定:

<activity
    android:name=".act.BuySuccessActivity"
    android:label="@string/title_act_buy_succ"
    android:launchMode="singleTop" />

通过lanuchMode指定。

(2)通过在Intent中设置标志位指定:

Intent intent =new Intent(this,MainActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

其中第二种的优先级大于第一种,同时存在以第二种为准,限定范围也有所不同,可根据需求选择。

书上列举了许多常用的标记位,这里也列出来方便大家查看:
FLAG_ACTIVITY_NEW_TASK
指定为singleTask模式启动。
FLAG_ACTIVITY_SINGLE_TOP
指定为singleTop模式启动。
FLAG_ACTIVITY_CLEAR_TOP
指定为singleTop默认具有该标志位,位于他栈上的所有activity都要出栈。
FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS
具有该标志的不会出现在activity历史activity的列表中,等同于android:excludeFromRecents="true"









版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

android的Activity启动模式

  • 2016-03-16 17:59
  • 516KB
  • 下载

Android中Activity的启动模式

(本文属于基础,但是在了解之前必须知道Activity的生命周期,以及Intent的基本用法) 1.活动的启动模式: 活动的启动模式一共有四种: standard,singleTop,singl...

android入门-Activity的四种启动模式详解

今天来说一下Android中四大组件之一的Activity的启动模式     一共有四种,分别为: Standard   模式         这是默认模式,当我们不设置启动模式的时候,就默认为...

Android下的Activity的四种启动模式

一:Standard的启动模式 Standard是默认的模式每开始一个activity,就会在栈中加一个activity,相同的也会加, 所以加多少个,就要按多少次返回键才能回到最初的界面 二:...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)