Android开发艺术探索(一)——Activity的生命周期和启动模式

时间:2023-01-27 18:14:15

Activity的生命周期和启动模式


生命周期有?

1.典型情况下的生命周期—》指有用户参与的情况下,Activity所经过的生命周期改变

2.异常情况下的生命周期—》指Activity被系统回收或者由于当前设备的configuration发生改变而导致Activity被销毁重建

1.1 典型生命周期分析Android开发艺术探索(一)——Activity的生命周期和启动模式

  旧活动的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开发艺术探索》读书笔记 &lpar;1&rpar; 第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. 第一章&colon;Activity的生命周期和启动模式

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

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

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

随机推荐

  1. BZOJ 2626 &amp&semi; KDtree

    题意: 二维平面n个点 每次给出一个点询问距离第k小的点. SOL: kdtree裸题,抄了一发别人的模板...二维割起来还是非常显然的.膜rzz的论文. 不多说了吧.... Code: /*==== ...

  2. Codeforces Round &num;269 &lpar;Div&period; 2&rpar;

    A 题意:给出6根木棍,如果有4根相同,2根不同,则构成“bear”,如果剩余两个相同,则构成“elephant” 用一个数组分别储存各个数字出现的次数,再判断即可 注意hash[i]==5的时候,也 ...

  3. 数据库连接池c3p0和dbcp

    现在常用的开源数据连接池主要有c3p0.dbcp和proxool三种,其中: hibernate开发组推荐使用c3p0; spring开发组推荐使用dbcp(dbcp连接池有weblogic连接池同样 ...

  4. objc非主流代码技巧

    原文:http://blog.sunnyxx.com/2014/08/02/objc-weird-code/ [娱乐向]objc最短的方法声明 先来个娱乐向的.方法声明时有一下几个trick: 返回值 ...

  5. was性能调优

    数据库设置 使用此页面来指定数据库会话支持的设置. 要查看此管理控制台页面,请单击服务器 > 服务器类型 > WebSphere 应用程序服务器 > server_name > ...

  6. java数据库编程之事务、视图、索引、备份、恢复

    第五章:事务.视图.索引.备份和恢复 5.1:事务 事务的概念:事务(transcation)是讲一系列数据操作捆绑成为一个整体进行统计管理. 如果某一事务执行成功了,则该事务进行操作的所有数据将会提 ...

  7. 2019年3月29日至30日深圳共创力《成功的产品经理DNA》在深圳公开课成功举办

    2019年3月29至30日,在深圳南山区*滨大酒店10楼行政厅,由深圳市共创力企业管理咨询有限公司举办的<成功的产品经理DNA>公开课成功举办,此次公开课由深圳市共创力咨询资深讲师冯老 ...

  8. markdown反射型xss漏洞复现

    markdown xss漏洞复现 转载至橘子师傅:https://blog.orange.tw/2019/03/a-wormable-xss-on-hackmd.html 漏洞成因 最初是看到Hack ...

  9. WPF之几何图形Geometry

    在WPF的DrawingContext对象中,提供了基本的绘制椭圆和矩形的API:DrawEllipse和DrawRectangle.但是,这些是远远不够用的,我们在日常应用中,更多的是使用DrawG ...

  10. vsftp管理脚本&lpar;CentOS6用&rpar;

    #!/bin/bash # ### BEGIN INIT INFO # Provides: vsftpd # Required-Start: $local_fs $network $named $re ...