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才 ...
随机推荐
-
BZOJ 2626 &; KDtree
题意: 二维平面n个点 每次给出一个点询问距离第k小的点. SOL: kdtree裸题,抄了一发别人的模板...二维割起来还是非常显然的.膜rzz的论文. 不多说了吧.... Code: /*==== ...
-
Codeforces Round #269 (Div. 2)
A 题意:给出6根木棍,如果有4根相同,2根不同,则构成“bear”,如果剩余两个相同,则构成“elephant” 用一个数组分别储存各个数字出现的次数,再判断即可 注意hash[i]==5的时候,也 ...
-
数据库连接池c3p0和dbcp
现在常用的开源数据连接池主要有c3p0.dbcp和proxool三种,其中: hibernate开发组推荐使用c3p0; spring开发组推荐使用dbcp(dbcp连接池有weblogic连接池同样 ...
-
objc非主流代码技巧
原文:http://blog.sunnyxx.com/2014/08/02/objc-weird-code/ [娱乐向]objc最短的方法声明 先来个娱乐向的.方法声明时有一下几个trick: 返回值 ...
-
was性能调优
数据库设置 使用此页面来指定数据库会话支持的设置. 要查看此管理控制台页面,请单击服务器 > 服务器类型 > WebSphere 应用程序服务器 > server_name > ...
-
java数据库编程之事务、视图、索引、备份、恢复
第五章:事务.视图.索引.备份和恢复 5.1:事务 事务的概念:事务(transcation)是讲一系列数据操作捆绑成为一个整体进行统计管理. 如果某一事务执行成功了,则该事务进行操作的所有数据将会提 ...
-
2019年3月29日至30日深圳共创力《成功的产品经理DNA》在深圳公开课成功举办
2019年3月29至30日,在深圳南山区*滨大酒店10楼行政厅,由深圳市共创力企业管理咨询有限公司举办的<成功的产品经理DNA>公开课成功举办,此次公开课由深圳市共创力咨询资深讲师冯老 ...
-
markdown反射型xss漏洞复现
markdown xss漏洞复现 转载至橘子师傅:https://blog.orange.tw/2019/03/a-wormable-xss-on-hackmd.html 漏洞成因 最初是看到Hack ...
-
WPF之几何图形Geometry
在WPF的DrawingContext对象中,提供了基本的绘制椭圆和矩形的API:DrawEllipse和DrawRectangle.但是,这些是远远不够用的,我们在日常应用中,更多的是使用DrawG ...
-
vsftp管理脚本(CentOS6用)
#!/bin/bash # ### BEGIN INIT INFO # Provides: vsftpd # Required-Start: $local_fs $network $named $re ...