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. java中抽象类与接口的区别

    1.abstract class 在 Java 语言中表示的是一种继承关系,一个类只能使用一次继承关系.但是,一个类却可以实现多个interface. 2.在abstract class 中可以有自己 ...

  2. ARM中的PC和AXD的PC

    R15 (PC)总是指向“正在取指”的指令,而不是指向“正在执行”的指令或正在“译码”的指令.一般来说,人们习惯性约定将“正在执行的指令作为参考点”,称之为当前第一条指令,因此PC 总是指向第三条指令 ...

  3. C# 两时间,时间间隔

    #region 返回时间差        public static string DateDiff(DateTime DateTime1, DateTime DateTime2)        {  ...

  4. qt 5 小练习 简易画板

    如何在窗口上画线?用一根根线来拼凑图案呢? 想必大家都知道点的集合是线,而线的集合就是很多线啦,用线的集合我们能拼凑出许许多多的图案.于是我就要记录自己跟着老师的学习之路啦: 既然有集合的话,势必要用 ...

  5. Cocos2d-X 2.2嵌入MFC的子窗口

    1.在cocos2dx目录下创建基于对话框的MFC工程,对话框中间放一个Picture控件 2.添加cocos2dx的相关头文件包含路径.库包含路径和依赖项,可以参考其他cocos工程设置 3.选中P ...

  6. [BZOJ 3530] [Sdoi2014] 数数 【AC自动机+DP】

    题目链接:BZOJ - 3530 题目分析 明显是 AC自动机+DP,外加数位统计. WZY 神犇出的良心省选题,然而去年我太弱..比现在还要弱得多.. 其实现在做这道题,我自己也没想出完整解法.. ...

  7. PHP传引用报错(5.4版本)

    php5.3系列版本以及以前版本,传引用没有什么问题,升级到php5.4以后,传引用的地方,全报错 Fatal error: Call-time pass-by-reference has been ...

  8. [topcoder]NinePuzzle

    http://community.topcoder.com/stat?c=problem_statement&pm=11225&rd=14427 http://apps.topcode ...

  9. PHP数组和Json之间的互相转换 json_encode() 和 json_decode()

    之所以要用到Json,很多时候是因为使用ajax对象时,程序与JS函数之间的数据交互.因为JS不认识PHP中的数组,PHP也不认识JS中的数组或对象.Json很好的解决了这个问题. Json简介 JS ...

  10. picturebox 图片自适应

    picturebox控件共有两种载入图片方式,分别为: pictureBox1.BackgroundImage = Image,pictureBox1.load(url) 为使加载的图片自使用控件尺寸 ...