Android开发艺术探索(一)——Activity的生命周期和启动模式
Activity的生命周期和启动模式
生命周期有?
1.典型情况下的生命周期—》指有用户参与的情况下,Activity所经过的生命周期改变
2.异常情况下的生命周期—》指Activity被系统回收或者由于当前设备的configuration发生改变而导致Activity被销毁重建
1.1 典型生命周期分析
旧活动的OnPause先调用,新Activity才启动
异常分析:
1.资源相关的系统配置发生改变,导致Activity被杀死并重新创建
系统只在Activity导致终止的时候才会调用OnSaveInstanceState和OnRestoreInstanceState来存储和恢复数据,其他情况不会触发这个过程
2.资源内存不足导致低优先级的Activity被杀死
优先级: 前台Activity—> 可见非前台—> 后台Activity
Q:怎样在系统配置发生改变时,活动不被创建?
可配置configuration属性(在AndroidMenifest.xml中进行声明);如旋转屏幕时,configuration="orientation";
| 项目 | 含义 |
| mcc |
SIM卡唯一标识IMSI(国际移动用户识别码)中的国家代码,有三位数字组成, 中国为460,此项标识mcc代码发生了改变 |
| locale | 设备的本地位置发生了改变,一般指切换了系统语言 |
| keyboardHidden | 键盘的可访问性发生了改变,比如用户调出了键盘 |
| orientation | 屏幕方向发生了改变 |
| touchscreen | 触摸屏发生了改变 |
| keyboard | 键盘类型发生了改变,比如用户使用了外插键盘 |
| navigation | 系统导航方式发生了改变,比如采用了轨迹球导航 |
| screenLayout | 屏幕布局 |
| fontScale | 系统字体缩放比例 |
| uiMode | 用户界面模式发生了改变,比如是否开启了夜间模式 |
| screenSize | 当屏幕的尺寸信息发生了改变,当旋转设备屏幕时,屏幕尺寸会发生变化 |
| smallestScreeSize | 设备的物理屏幕尺寸发生改变,这个项目和屏幕的方向没有关系 |
| LayoutDirection | 当布局方向发生变化 |
| mnc | SIM卡唯一标识IMSI()中的运营商代码,由两个数字组成,移动00 联通 01 |
1.2 Activity启动模式
有哪些模式?
Standard:标准模式
SingleTop:栈顶复用模式
SingleTask:栈内复用模式
SingleInstance:单实例模式
Q:如何给Activity指定启动模式呢?
方法一: 通过AndroidMenifest.xml 为其指定;如android:launchMode="SingleTask";'
方法二:在Intent设置中设置; 如:intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
二者的区别如下:
1.二者同时存在时,以第二种为主;
2.前者不能设定 FLAG_ACTIVITY_CLEAR_TOP;后者不能为Activity 指定SingleInstance模式。
Activity的Falgs标志位
FLAG_ACTIVITY_NEW_TASK 为Activity指定“single Task” 启动模式
FLAG_ACTIVITY_SINGLE_TOP 为Activity指定“single Top”启动模式
FLAG_ACTIVITY_CLEAR_TOP 具有此标记位的Activity,当它启动时,在同一任务栈中,所有位于它上面的Activity都需要出栈
FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS 具有此标记的Activity,不会出现在历史 Activity的列表中
1.3 IntentFilter的匹配规则
一个Activity中可以有多个intent-filter ,一个Intent只要能匹配任何一组Intent-filter,即可启动对应的Activity
intent-filter 中过滤信息有 action、Category、 data、...
action: 匹配区分大小写(必须有一个,且和过滤规则中某个action相同)
只需要Intent中的action能够和过滤规则中的任何一个action匹配即可
Category:Intent中可以没有(系统会在加载startActivity/startActivityForResult时,匹配默认的category—DEFAULT),但若有,不管几个,每个都要能够和过滤规则中任何一个category相同;
data:必须含有data数据,且data数据能够安全匹配过滤规则中某个data
注:URI中schema 有默认值 content和file;
如果要为Intent指定完整的data,必须要调用setDataAndType 方法
Android开发艺术探索(一)——Activity的生命周期和启动模式的更多相关文章
- Android开发艺术1之Activity的生命周期
作为<Android开发艺术探索>这本书的第一篇博客,我就多说几句.本系列博客旨在对书中相关内容进行解读,简化,提供一个入门到提高的流程.不敢说书评,也不能说教程,只希望对有些人有帮助就好 ...
- Android开发艺术探索笔记——第一章:Activity的生命周期和启动模式
Android开发艺术探索笔记--第一章:Activity的生命周期和启动模式 怀着无比崇敬的心情翻开了这本书,路漫漫其修远兮,程序人生,为自己加油! 一.序 作为这本书的第一章,主席还是把Activ ...
- 《Android开发艺术探索》读书笔记 (1) 第1章 Activity的生命周期和启动模式
第1章 Activity的生命周期和启动模式 1.1 Activity生命周期全面分析 1.1.1 典型情况下生命周期分析(1)一般情况下,当当前Activity从不可见重新变为可见状态时,onRes ...
- 十分钟掌握Activity的生命周期与启动模式
1. Activity的生命周期 正常情况下的Activity生命周期如下图所示(来自Android Developer): 当资源相关的系统配置变更时(比如设备屏幕方向改变,键盘可见性变化),会导致 ...
- Activity的生命周期和启动模式
Activity的生命周期分析 典型情况下的生命周期.是指在用户参与的情况下,Activity所经过的生命周期的改变. 异常情况下的生命周期.是指Activity被系统回收或者由于当前设备的Confi ...
- Android开发学习之路--Activity之生命周期
其实这篇文章应该要在介绍Activity的时候写的,不过那个时候还不怎么熟悉Activity,还是在这里详细介绍下好了.还是参考下官方文档的图吧: 从上面的流程,我们可以看出首先就是打开APP,开始执 ...
- 一、Activity的生命周期和启动模式
1.Activity的生命周期 1.1.典型情况下的生命周期 在有用户参与的情况下,Activity所经过的生命周期的改变. Activity会经历如下生命周期: onCreate-onRestart ...
- 第一章:Activity的生命周期和启动模式
Activity是Android中四大组件之首,所以需要重视,尤其是启动方式,在AndroidManifest.xml中的注册信息 (一)Activity的生命周期 1.1.1 正常情况下的生命周期 ...
- 《android开发艺术探索》读书笔记(一)--Activity的生命周期和启动模式
No1: 如果新Activity采用了透明主题,那么当前Activity不会回调onStop: No2: 新Activity启动之前,栈顶的Activity需要先onPause后,新Activity才 ...
随机推荐
- express cookie-session解惑
express的中间件基于connect模块而来,所以相关文档可以直接参考 http://www.senchalabs.org/connect/ 使用cookie-session中间件过程中,比较困惑 ...
- MySQL修改时区的方法小结
这篇文章主要介绍了MySQL修改时区的方法,总结分析了三种常见的MySQL时区修改技巧,包括命令行模式.配置文件方式及代码方式,需要的朋友可以参考下 方法一:通过mysql命令行模式下动态修改 1.1 ...
- linux命令之chown命令
发布:JB01 来源:脚本学堂 [大 中 小] 本文介绍下,linux系统中用于文件与目录权限管理的命令 chown命令的用法,chown将指定文件的拥有者改为指定的用户或组.有需要的朋友 ...
- 使用cvs或svn从sourceforge上获取开源项目的方法[转载]
著名开源软件网站(www.sourceforge.net)上面的开源项目,大部分使用的管理工具为cvs或svn. 这两种软件的代表客户端程序是wincvs和tortoiseSVN. 1.cvs C ...
- sirius的学习笔记(3)
毕业论文什么的终于搞完了,重拾我的python Creating the python skeleton project directory $ mkdir project $ cd project ...
- Spring实战——无需一行xml配置实现自动化注入
已经想不起来上一次买技术相关的书是什么时候了,一直以来都习惯性的下载一份电子档看看.显然,如果不是基于强烈的需求或强大的动力鞭策下,大部分的书籍也都只是蜻蜓点水,浮光掠影. 就像有位同事说的一样,有些 ...
- php常用函数集
网络请求: /** * 发起HTTPS请求 */ function curl_post($url,$data=null,$header=null,$post=0) { //初始化curl $ch = ...
- HttpWebRequest提高效率之连接数,代理,自动跳转,gzip请求等设置问题
先设置4个: [csharp] webrequest.ServicePoint.Expect100Continue = false; //是否使用 Nagle 不使用 提高效率 webrequest. ...
- NODE.JS玩玩
按一个网页的来,最好最后能到EXPRESS.JS. http://www.nodebeginner.org/index-zh-cn.html 这样就能对比DJANGO,看看两者的WEB框架,加深认识. ...
- SpringSecurity简单应用(二)
这里我首先对我上一篇博文的第三个实例做一下讲解,下面是applicationContext-security.xml内容如下: <?xml version="1.0" enc ...