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. 使用Fiddler提高前端工作效率 (实例篇)

    上篇中,我们对Fiddler Web Debugger有了简单的接触,也许你已经开始在用Fiddler进行HTTP相关的调试,在这一篇,我们将通过一个实例了解Fiddler的神奇魔法. 在我们前端开发 ...

  2. LFS实践

    用了三天,编译了两次LFS,把LFS的基本流程和原理都弄清了.用的是LFS 6.3,使用的教程是LFS速成手册(6.3) ,感觉很不错,如果按照它的做法,一步一步来,基本都能编译成功而且没什么错误.不 ...

  3. kill -9杀掉nginx主进程、reload失败解决办法

    前言: 无意间使用 kill -9 命令杀掉了nginx的主进程,当我再次使用 ./nginx -s reload 重新刷新nginx的时候,一直出现了下面的错误信息: nginx: [alert] ...

  4. QLGame 2d Engine SpriteBatch类创建

    GitHub地址:https://github.com/wsgzxl/QLGame2dEngine 今天说五个问题: 1.前面说到的 颜色不对的问题,是因为FreeImage读取出来的数据格式与Ope ...

  5. Entity FrameWork知识点汇总

    这里罗列的并非EF的所有知识点 ,只是我在开发过程中遇到或者使用到的知识,记录于此, 备忘 1:EF的三种创建方式 A:Database First B:Model First C:Code Firs ...

  6. Swift初体验之图案锁

    这篇在应用上貌似没有价值,貌似我写了好多实际上都没有价值,这里贴出来就是分享下. 自己写swift好多天了,感觉好多东西还是不太懂,边学边做,互勉! 先上图: 代码:下载

  7. 【POJ 1988】 Cube Stacking (带权并查集)

    Cube Stacking Description Farmer John and Betsy are playing a game with N (1 <= N <= 30,000)id ...

  8. [topcoder]IncreasingSubsequences

    http://community.topcoder.com/stat?c=problem_statement&pm=7753&rd=10672 http://community.top ...

  9. [转贴] 从零开始学C++之异常(二):程序错误、异常(语法、抛出、捕获、传播)、栈展开

    一.程序错误 编译错误,即语法错误.程序就无法被生成运行代码. 运行时错误 不可预料的逻辑错误 可以预料的运行异常 例如: 动态分配空间时可能不会成功 打开文件可能会失败 除法运算时分母可能为0 整数 ...

  10. MySQL 5.6 root密码丢失

     windows下mysql密码忘记了 第一步:netstat -nat(可以查看mysql是否启动了,如果启动了,可以用输入net stop mysql(或者通过任务管理器结束进程)) 第二步:my ...