Android 核心组件 Activity 之下
创建新的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 之下的更多相关文章
- Android 核心组件 Activity 之上
核心组件的特征 1. 必须继承自特定的类(Activity 或者 Activity的子类) 2. 必须注册: 通常是AndroidManifest.xml的 <application> 中 ...
- Android核心组件 Activity组件
1.Activity简介 四大组件之一的Activity组件,在应用中一个Activity可以用来表示一个界面,中文意思也可以理解为"活动",即一个活动开始,代表Activity组 ...
- Android应用Activity、Dialog、PopWindow、Toast窗体加入机制及源代码分析
[工匠若水 http://blog.csdn.net/yanbober 转载烦请注明出处.尊重劳动成果] 1 背景 之所以写这一篇博客的原因是由于之前有写过一篇<Android应用setCont ...
- Android中Activity的启动模式
简介 Android中的活动启动方式分为4种:standard, singleTop, singleTask, singleInstance.可以在AndroidManifest.xml中通过给< ...
- Android之Activity的生命周期
PS:写一发关于Activity的生命周期,也算是面试的重点内容. 学习内容: 1.Activity的生命周期 2.面对多种情况的时候Activity的生命周期 3.onSaveInstanceSta ...
- android开发------Activity生命周期
这几天工作比较忙,基本没有什么时间更新播客了. 趁着今晚有点时间,我们来简单说一下什么是Activity生命周期和它们各阶段的特征 什么是生命周期 在还没有接触android开发的时候,听到有人说Ac ...
- Android课程---Activity中保存和恢复用户状态
onSaveInstanceState 保存 在暂停之后和保存之前调用 onRestoreInstanceState 恢复 再启动之后和显示之前调用 package com.example.chens ...
- Android课程---Activity 的生命周期
activity类处于android.app包中,继承体系如下: 1.java.lang.Object 2.android.content.Context 3.android.app.Applicat ...
- Android课程---Activity的创建
一.为了创建一个新的Activity,你需要继承Activity类,定义UI,实现功能.新的Activity的最基本的框架代码如下所示: package com.paad.myapplication; ...
随机推荐
- c#智能感知(设置)及实现
1) 使用工具->选项菜单命令,选择文本编辑器->C#设置, 将上面圈出的2个复选框(自动列出成员和参数信息)打勾, 然后 Intellisense就会工作了.(如果没这么多选项,请勾选S ...
- Getting started with Apache Camel--转载
原文地址:http://www.javacodegeeks.com/2012/12/getting-started-with-apache-camel.html About Camel: Apache ...
- oracle数据库元数据SQL查询
oracle数据库经典SQL查询 .查看表空间的名称及大小 select t.tablespace_name, round(sum(bytes/(1024*1024)),0) ts_size from ...
- [转]一步步教你如何在 Visual Studio 2013 上使用 Github
介绍 我承认越是能将事情变简单的工具我越会更多地使用它.尽管我已经知道了足够的命令来使用Github,但我宁愿它被集成到IDE中.在本教程中,我会告诉你使用Visual Studio 2013如何实现 ...
- Android进阶笔记05:View、SurfaceView 和GLSurfaceView 的关系和区别
1. Android游戏当中主要的除了控制类外就是显示类View.SurfaceView是从View基类中派生出来的显示类.android游戏开发中常用的三种视图是: (1) view.Sur ...
- SQL Server2008附加数据库失败
今天旁晚时分,我准备把老师在上课时候发给我们的一个数据库附加到我的SQL Server2008上面去,本来在学校机房用的SQL Server2000是很顺利地就成功了,但是把*.mdf文件附加到我的0 ...
- Python中查找字符串方法的速度比较
- HTML5 indexedDB数据库的入门学习(一)
笔者早些时间看过web sql database,但是不再维护和支持,所以最近初步学习了一下indexedDB数据库,首先indexedDB(简称IDB)和web sql database有很大的差别 ...
- poj 1987 树的分治
思路:1741的A1送 1. #include<iostream> #include<cstring> #include<algorithm> #include&l ...
- CSS3秘笈第三版涵盖HTML5学习笔记1~5章
第一部分----CSS基础知识 第1章,CSS需要的HTML HTML越简单,对搜索引擎越友好 div是块级元素,span是行内元素 <section>标签包含一组相关的内容,就像一本书中 ...