------ 活动的启动模式 ------

在实际项目中应该根据特定的需求为每个活动指定恰当的启动模式。 四种启动模式:

standard 、 singleTop 、 singleTask 、 singleInstance,

可以在AndriodManifest.xml中通过给<activity>标签制定android:launchMode属性选择启动模式。

>> standard:活动默认的启动模式。每当启动一个新的活动,他就会在返回栈中入栈,并处于栈顶 位置。系统不会在乎这活动是否已经存在返回栈中,每次启动都会创建一个新的实例。

>> singleTop:在启动活动时如果发现栈中的栈顶为该活动,则不新创建该活动。

>> singleTask: 如果活动并不处于栈顶位置,还有可能创建多个活动的实例。为了在整个返回栈中 只有一个活动的实例,可以将任务的启动模式设置为singleTask。

>> singleInstance: 该模式用于解决两个应用程序共享一个活动的问题,共享一个返回栈。

关于活动的一些应用技巧:

>> 知晓当前运行的活动是哪一个活动:

自创一个基类活动baseActivity,继承自Activity,并在onCreate方法中实现下列方法:

  super.onCreate(savedInstanceState);

  Log.d("BaseActivity", getClass().getSimpleName()); //获取当前活动的名字

>> 随时随地退出程序:

只需用一个专门的集合类对所有的活动活动进行管理就可以了。

public class ActivityCollector { //活动管理器类

  public static List<Activity> activities = new ArrayList<Activity>();

   public static void addActivity(Activity activity) {

    activities.add(activity); //往list中新加activity元素

  }

  public static void removeActivity(Activity activity) {

    activities.remove(activity); //删除list中的一个activity元素

  }

public static void finishAll() { //销毁list中所有的activity

  for (Activity activity : activities) {

    if (!activity.isFinishing()) {

      activity.finish();

    }

  }

}

}

自创的基类活动重写如下:

public class BaseActivity extends Activity {

  @Override

  protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    Log.d("BaseActivity", getClass().getSimpleName());//获得当前活动的名字

    ActivityCollector.addActivity(this);//加入新创建的activity到list中

  }

  @Override

  protected void onDestroy() {

    super.onDestroy();

    ActivityCollector.removeActivity(this); //在list中删除将要销毁的activity

  }

}

Android基础知识06—活动的四大启动模式的更多相关文章

  1. Android Activity的任务栈和四大启动模式

    在安卓系统中默认每次启动一个Activity时,系统会创建一个实例,并按照先进后出的原则放入任务栈中,当我们按back键时,就会有一个activity从任务栈顶移除,重复下去,直到任务栈为空,系统就会 ...

  2. Android基础知识05—活动的生命周期

    ------ 活动的生命周期 ------ Android是使用任务Task来管理活动的,一个任务就是一组存放在栈里的活动的集合.每当启动一个活动 ,他就会在返回栈中入栈,并处于栈顶位置.而每当我们按 ...

  3. 【Xamarin开发 Android 系列 4】 Android 基础知识

    原文:[Xamarin开发 Android 系列 4] Android 基础知识 什么是Android? Android一词的本义指“机器人”,同时也是Google于2007年11月5日宣布的基于Li ...

  4. Android中Activity的四大启动模式实验简述

    作为Android四大组件之一,Activity可以说是最基本也是最常见的组件,它提供了一个显示界面,从而实现与用户的交互,作为初学者,必须熟练掌握.今天我们就来通过实验演示,来帮助大家理解Activ ...

  5. Activity(活动)的启动模式

    在实际项目中我们应该根据特定的需求为每个活动指定相应的启动模式.启动模式一共分为4种:standar.singleTop.singleTask和singleInstance.可以在AndroidMan ...

  6. Android基础知识巩固:关于PendingIntent和广播

    平时使用广播的场合比较多,但细节的东西,看过了也没有总结,以至于某些场合有小问题,还是要把原理和属性搞清楚才能运用自如. 其实也是自己比较懒,先看别人的blog,有个概念再去官网看英文的能好理解一些. ...

  7. Android基础知识(一)

    前言 前言 从软件测试最终目的发现问题缺陷来看,Findyou比较认同一个观念,测试的能力大致可以划分成三个能力层次:发现问题.定位问题.预防问题.有机会探讨一下这个分类. 发现问题各种方式方法,比如 ...

  8. Android基础知识总结

    四大组件之一活动 活动状态 运行状态:活动处于栈顶 暂停状态:活动不处于栈顶,但仍然可见 停止状态:完全不可见 销毁状态:离开返回栈 生存期 onCreate() onStart():不可见到可见调用 ...

  9. android开发学习---linux下开发环境的搭建&& android基础知识介绍

    一.配置所需开发环境 1.基本环境配置 JDK 5或以上版本(仅有JRE不够) (http://www.oracle.com/technetwork/java/javase/downloads/ind ...

随机推荐

  1. 201521123032 《Java程序设计》第8周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容. 2. 书面作业 本次作业题集集合 1.List中指定元素的删除(题目4-1) 1.1 实验总结 在课堂上在老师 ...

  2. 201521123037 《Java程序设计》第1周学习总结

    #1.本章学习总结 了解java的发展历程 能够区分JVM.JRE.JDK之间的关系 了解文件名.类名要相同,且文件名大小写代表不同的名称 初步了解java编程语句 学会用控制台编译java程序 #2 ...

  3. [转载]sqlserver、Mysql、Oracle三种数据库的优缺点总结

    一.sqlserver优点:易用性.适合分布式组织的可伸缩性.用于决策支持的数据仓库功能.与许多其他服务器软件紧密关联的集成性.良好的性价比等:为数据管理与分析带来了灵活性,允许单位在快速变化的环境中 ...

  4. 201521123017 《Java程序设计》第12周学习总结

    1. 本周学习总结 2. 书面作业 Q1.字符流与文本文件:使用 PrintWriter(写),BufferedReader(读) 1.1 生成的三个学生对象,使用PrintWriter的printl ...

  5. 201521123004《Java程序设计》第9周学习总结

    1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结异常相关内容. 答:思维导图如下: Java中使用try-catch语法处理异常: try { 可能产生异常的代码段 }catch ...

  6. 201521123028 《Java程序设计》第11周学习总结

    1. 本周学习总结 关于互斥同步访问 synchronized关键字 -wait.notify和notifyAll Lock和Condition方法 -condition.await() //类似ob ...

  7. Markdown编辑后

    一个例子: 例子开始 1. 本章学习总结 今天主要学习了三个知识点 封装 继承 多态 2. 书面作业 Q1. java HelloWorld命令中,HelloWorld这个参数是什么含义? 今天学了一 ...

  8. Install Oracle 12c R2 on CentOS 7 silent

    准备工作 VMware 虚拟机 CentOS 7 17.08 系统安装包镜像 Oracle 12c R2 软件安装包 配置 yum 库并安装如下包 binutils-2.23.52.0.1-12.el ...

  9. Spring - bean的autowire属性(自动装配)

    当我们要往一个bean的某个属性里注入另外一个bean,我们会使用<property> + <ref/>标签的形式.但是对于大型项目,假设有一个bean A被多个bean引用注 ...

  10. 嵌入式Llinux学习路线图

    版本 日期 作者 说明 V1 2016.07.29 韦东山 第1版本,Android部分未写 我是1999年上的大学,物理专业.在大一时,我们班里普遍弥漫着对未来的不安,不知道学习了物理后出去能做什么 ...