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的生命周期和启动模式的更多相关文章

  1. Android开发艺术1之Activity的生命周期

    作为<Android开发艺术探索>这本书的第一篇博客,我就多说几句.本系列博客旨在对书中相关内容进行解读,简化,提供一个入门到提高的流程.不敢说书评,也不能说教程,只希望对有些人有帮助就好 ...

  2. Android开发艺术探索笔记——第一章:Activity的生命周期和启动模式

    Android开发艺术探索笔记--第一章:Activity的生命周期和启动模式 怀着无比崇敬的心情翻开了这本书,路漫漫其修远兮,程序人生,为自己加油! 一.序 作为这本书的第一章,主席还是把Activ ...

  3. 《Android开发艺术探索》读书笔记 (1) 第1章 Activity的生命周期和启动模式

    第1章 Activity的生命周期和启动模式 1.1 Activity生命周期全面分析 1.1.1 典型情况下生命周期分析(1)一般情况下,当当前Activity从不可见重新变为可见状态时,onRes ...

  4. 十分钟掌握Activity的生命周期与启动模式

    1. Activity的生命周期 正常情况下的Activity生命周期如下图所示(来自Android Developer): 当资源相关的系统配置变更时(比如设备屏幕方向改变,键盘可见性变化),会导致 ...

  5. Activity的生命周期和启动模式

    Activity的生命周期分析 典型情况下的生命周期.是指在用户参与的情况下,Activity所经过的生命周期的改变. 异常情况下的生命周期.是指Activity被系统回收或者由于当前设备的Confi ...

  6. Android开发学习之路--Activity之生命周期

    其实这篇文章应该要在介绍Activity的时候写的,不过那个时候还不怎么熟悉Activity,还是在这里详细介绍下好了.还是参考下官方文档的图吧: 从上面的流程,我们可以看出首先就是打开APP,开始执 ...

  7. 一、Activity的生命周期和启动模式

    1.Activity的生命周期 1.1.典型情况下的生命周期 在有用户参与的情况下,Activity所经过的生命周期的改变. Activity会经历如下生命周期: onCreate-onRestart ...

  8. 第一章:Activity的生命周期和启动模式

    Activity是Android中四大组件之首,所以需要重视,尤其是启动方式,在AndroidManifest.xml中的注册信息 (一)Activity的生命周期 1.1.1 正常情况下的生命周期 ...

  9. 《android开发艺术探索》读书笔记(一)--Activity的生命周期和启动模式

    No1: 如果新Activity采用了透明主题,那么当前Activity不会回调onStop: No2: 新Activity启动之前,栈顶的Activity需要先onPause后,新Activity才 ...

随机推荐

  1. 检查ftp备份数据完整性及短信告警的shell脚本

    发布:thebaby   来源:net     [大 中 小] 检查ftp备份数据完整性及短信告警的shell,有需要的朋友可以参考下. 该脚本实现如下的功能: 对远程备份到ftp服务器的数据完整性及 ...

  2. win7 64位Apache http server+PHP配置

    一.下载PHP 1.首先下载apache http server(我本来是想在官网下载,但是找半天也没找到,于是就在网上下了一个老版本的)我是在这个网址下载的:http://download.csdn ...

  3. Sass 编译的几种方法

    常常有人会问,使用 Sass 进行开发,那么是不是直接通过“<link>”引用“.scss”或“.sass”文件呢? 那么这里告诉大家,在项目中还是引用“.css”文件,Sass 只不过是 ...

  4. C# 判断中文字符(字符串)

    在unicode 字符串中,中文的范围是在4E00..9FFF:CJK Unified Ideographs.通过对字符的unicode编码进行判断来确定字符是否为中文.protected bool  ...

  5. 【转载】db blocks gets & consistent gets

    LOGIC IO(逻辑读次数)= db block gets + consistent gets consistent get : 在一致读模式下所读的快数,包括从回滚段读的快数. db block ...

  6. sql server2005主从数据库同步配置

    网站规模到了一定程度之后,该分的也分了,该优化的也做了优化,但是还是不能满足业务上对性能的要求:这时候我们可以考虑使用主从库.主从库是两台服务器上的两个数据库,主库以最快的速度做增删改操作+最新数据的 ...

  7. JVM 找出最耗 cpu的线程 并打印线程栈

    监控JVM中最占cpu的线程 top -Hp pid JVM中最占cpu的线程ID -o THREAD,tid,time | awk 'BEGIN {count=0; } { if($2>0.3 ...

  8. Codeforces Round #316 div2

    一场充满血腥hack之战!!! Problem_A: 题意: n个候选人在m个城市进行投票,每个城市选出票数最多的一个候选人为城市候选人,如果票数相同,则取编号小的候选人. 再从这m个城市候选人中选出 ...

  9. 这是从word发的第一篇博客。

    喜欢做的事,怎么样都不会厌倦. 以前只知道office功能强大,但不太清楚到底还能干些啥,印象最深的是outlook了,自己也在用,挺好 今天偶然发现,word还能发布博客,真是太惊喜了 这算是一篇实 ...

  10. 偶尔转帖:AI会议的总结(by南大周志华)

    偶尔转帖:AI会议的总结(by南大周志华) 说明: 纯属个人看法, 仅供参考. tier-1的列得较全, tier-2的不太全, tier-3的很不全. 同分的按字母序排列. 不很严谨地说, tier ...