创建新的Activity的方式:

  1. 在相应的文件下 Ctrl + N  (Eclipse, Android中不知道是不是)

  2. 创建类,继承自Activity或者Activity的子孙类, 并在AndroidManifast.xml 中注册, 创建样式文件, 在setContentView()方法中调用这个样式文件

激活一个新的Activity:

  Intent intent = new Intent(上下文对象, 被激活的对象的class);

  startActivity(intent);

当第二个Activity 激活时, 第一个Activity隐藏

  Activity_01.onPause()

  Acitvity_02.onCreate()

  Activity_02.onStart()

  Activity_02.onResume()

  Activity_01.onStop()

Activity的启动模式:

   Activity的启动模式是通过在AndroidManifest.xml 中为<activity>节点添加android:launchMode属性进行配置的.

  取值有:

    standard: 标准的(默认),  每次激活该Activity都会重新创建新的实例.
      singleTop: 栈顶唯一, 即如果激活Activity时,该Activity位于栈顶, 则不会创建新的实例, 反之, 如果没有位于栈顶, 则会创建新的实例.

            当Activity位于栈顶时, 再次创建这个Activity只会执行这个步骤:  onPause()  --> onResume()

    singleTask: 任务栈内唯一, 即当激活Activity时, 如果任务栈中没有该Activity, 则创建新的实例, 并压栈, 如果该Activity已经存在于任务栈中,

            则不会创建新的实例. singleTask 的Activity 如果不在栈顶, 那么在激活它时, 在栈中位于它前面的Activity都会被销毁.

    singleInstance: 实例唯一, 即这个Activity独立占据一个任务栈, 且它的实例最多只可能存在一个. (getTaskId()  可以看到这个Activity在哪个任务栈中)

任务栈(回退栈):

  1. Android为每个人物创建了一个栈来保存已经激活的Activity, 以至于当某个Activity被销毁时, 能继续显示当前一个Activity.

  2. 任务栈是一个先进后出,后进先出的栈结构.

  3. 新的Activity进入栈中 这个动作叫做 "压栈"; 一旦压栈,原先位于栈中的所有Activity都会向下移动, 新的Activity就占据栈顶位置,并位于前台显示.

  4. 当有栈中的Activity移除任务栈时, 称为"弹栈", 如果顶部的Activity弹栈. 就意味着这个Activity被销毁,移除任务栈,而下方的Activity就会向上弹起, 后续的某个Activity将获得栈顶位置.

销毁Activity:

  1. 销毁单个Activity:

     在Activity类中, 调用finish()方法, 即可销毁当前Activity. 该方法一般出现在激活其他Activity的代码之后

       销毁时流程:  onPause()  --> onStop()  --> onDestroy()

  2. 销毁多个/全部Activity:

    a. 确定哪些Activity需要被批量销毁

    b. 定义集合(List<Activity>)用于保存需要被销毁的Activity对象

    c. 在每个Activity的onCreate()方法中, 将该Activity添加到集合中

    d. 在每个Activity的onDestroy()方法中, 将该Activity从集合中移除

      e. 当需要批量销毁Activity时, 遍历集合, 依次调用finish()方法

补充:

  1. Android 系统中进程的优先级

    a. Android 是基于Linux系统的, 内存的管理机制决定 当系统内存不够用时,系统会自动清除一些进程, 以释放更多的内存空间, 优先级越低越可能被清除.

    b. 进程的优先级(由高到低):

      1) 前台进程: 可见可控进程(当前你正在用的应用)  前台只有1个

      2) 可见进程: 可见不可控进程(被部分遮挡的应用)  可见进程0个

      3) 服务进程: 正在运行的Service组件的进程  我们一般讲进程提升到这个级别

      4) 后台进程: 不可见不可控的进程

      5) 空进程:  进程已经执行结束

注:

  1. 不同的布局文件中id 是可以相同的

  2. hashCode()  可以查看实例的指针

  3. getTaskId()  可以看到这个Activity在哪个任务栈中

Android 核心组件 Activity 之下的更多相关文章

  1. Android 核心组件 Activity 之上

    核心组件的特征 1. 必须继承自特定的类(Activity 或者 Activity的子类) 2. 必须注册: 通常是AndroidManifest.xml的 <application> 中 ...

  2. Android核心组件 Activity组件

    1.Activity简介 四大组件之一的Activity组件,在应用中一个Activity可以用来表示一个界面,中文意思也可以理解为"活动",即一个活动开始,代表Activity组 ...

  3. Android应用Activity、Dialog、PopWindow、Toast窗体加入机制及源代码分析

    [工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处.尊重劳动成果] 1 背景 之所以写这一篇博客的原因是由于之前有写过一篇<Android应用setCont ...

  4. Android中Activity的启动模式

    简介 Android中的活动启动方式分为4种:standard, singleTop, singleTask, singleInstance.可以在AndroidManifest.xml中通过给< ...

  5. Android之Activity的生命周期

    PS:写一发关于Activity的生命周期,也算是面试的重点内容. 学习内容: 1.Activity的生命周期 2.面对多种情况的时候Activity的生命周期 3.onSaveInstanceSta ...

  6. android开发------Activity生命周期

    这几天工作比较忙,基本没有什么时间更新播客了. 趁着今晚有点时间,我们来简单说一下什么是Activity生命周期和它们各阶段的特征 什么是生命周期 在还没有接触android开发的时候,听到有人说Ac ...

  7. Android课程---Activity中保存和恢复用户状态

    onSaveInstanceState 保存 在暂停之后和保存之前调用 onRestoreInstanceState 恢复 再启动之后和显示之前调用 package com.example.chens ...

  8. Android课程---Activity 的生命周期

    activity类处于android.app包中,继承体系如下: 1.java.lang.Object 2.android.content.Context 3.android.app.Applicat ...

  9. Android课程---Activity的创建

    一.为了创建一个新的Activity,你需要继承Activity类,定义UI,实现功能.新的Activity的最基本的框架代码如下所示: package com.paad.myapplication; ...

随机推荐

  1. svm、经验风险最小化、vc维

    原文:http://blog.csdn.net/keith0812/article/details/8901113 “支持向量机方法是建立在统计学习理论的VC 维理论和结构风险最小原理基础上” 结构化 ...

  2. C#_自动化测试3_controll IE

    目前市面上有很多Web UI自动化测试框架,比如WatiN, Selinimu,WebDriver,还有VS2010中的Coded UI等等.  这些框架都可以操作Web中的控件,模拟用户输入,点击等 ...

  3. VS VC++ 设置版本号

    我并不是专职的VC++的开发者,只是有时候偶尔要开发一些C++的DLL,每当要发布新版本的时候,隔得时间长一点总会忘记了在那里设置生成文件的版本号. 在这里把VC++设置的步骤记录下来,以备忘! 设置 ...

  4. Redis 列表(List)

    Redis列表是简单的字符串列表,按照插入顺序排序.你可以添加一个元素导列表的头部(左边)或者尾部(右边) 一个列表最多可以包含 232 - 1 个元素 (4294967295, 每个列表超过40亿个 ...

  5. cocos2d-x中使用sqlite

    在单机游戏中有几十个场景道具,每一个都有各自的状态(获得.未获得.获得个数)等等,如果在游戏中平凡涉及到这些道具的实时存储,那么使用文本就会稍慢.可以使用sqlite数据库来完成. 下载地址:http ...

  6. Debian 7 安装 Emacs 24.3

    Emacs 24.3出来好久了,但是在Debian 7里还是Emacs 23的版本. 以下是安装步骤(9步): -dev libncurses5-dev autoconf automake texin ...

  7. 移植最新u-boot(裁剪和修改默认参数)之韦东山笔记

    1.下载.建立source insight工程.编译.烧写.如果无运行分析原因 tar xjf u-boot-2012.04.01.tar.bz2 cd u-boot-2012.04.01 make ...

  8. [转]DataTable用中使用Compute 实现简单的DataTable数据的统计

    本文转自:http://blog.csdn.net/zwxrain/article/details/252285 調用格式: object DataTable.Compute(string expre ...

  9. IIS 发布网站到外网

    前段时间做了一个项目在局域网中测试后要发布到外网上,一时间不知怎么搞,以为直接在IIS中修改发布时的IP就可以了,但是不可行,经过摸索终于成功发布到外网,下面是具体步骤. 前期准备:公网IP,掩码,网 ...

  10. Windows 7 IE11 F12 不能正常使用

    打开任意网站,按下F12,或者右键鼠标,按L键.出现上面的图的情况!解决办法如下:需要安装下面的补丁(KB3008923) 32位系统:http://www.microsoft.com/en-us/d ...