前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Activity生命周期和启动模式

Activity生命周期和启动模式

作者头像
提莫队长
发布2019-02-21 11:34:15
3880
发布2019-02-21 11:34:15
举报
文章被收录于专栏:刘晓杰刘晓杰

1.生命周期

http://blog.csdn.net/lxj1137800599/article/details/50353728 这篇文章已经介绍了生命周期,概括下来就是下面这幅图

这里写图片描述
这里写图片描述

2.启动模式

(1)standard:标准模式。每次激活Activity时,都创建Activity实例,并放入任务栈,不管这个实例是否存在 (2)singleTop:栈顶复用模式。如果就是该Activity,则不需要创建,直接调用onNewIntent方法,其余情况都要创建Activity实例 (3)singleTask:栈内复用模式(单实例模式)。如果要激活的那个Activity在任务栈中存在该实例,则不需要创建,只需要把此Activity放入栈顶,调用onNewIntent,并把该Activity以上的Activity实例都pop (4)singleInstance:单实例模式。加强版singleTask。A启动的时候会创建新的任务栈,后续A的启动只会复用

3.Activity的Flags

(1)FLAG_ACTIVITY_NEW_TASK = singleTask (2)FLAG_ACTIVITY_SINGLE_TOP = singleTop (3)FLAG_ACTIVITY_CLEAR_TOP:启动时,同一任务栈位于它上面的Activity都会出栈

4.IntentFilter匹配规则

只有action、data、category三方都匹配,Intent才算是匹配成功,进而才能打开相应的Activity。一个Activity若声明了多个Intent Filter,只需要匹配任意一个即可启动该组件。 (1)action的匹配规则 一个Intent Filter中可声明多个action,Intent中的action与其中的任一个action在字符串形式上完全相同(注意,区分大小写),action方面就匹配成功。可通过setAction方法为Intent设置action,也可在构造Intent时传入action。需要注意的是,隐式Intent必须指定action。 (2)category的匹配规则 与action和data不同,Intent中的category必须都在Intent Filter中出现才算匹配成功。Intent可以不指定category,若Intent中未指定category,系统会自动为它带上“android.intent.category.DEFAULT”。所以,想要接收Implicitly Intent的Activity都必须在manifest文件中的Intent Filter声明中带上“android.intent.category.DEFAULT”。我们可以通过addCategory方法为Intent添加category。 (3)data的匹配规则 data可进一步分为uri(由scheme、host、port、path | pathPattern | pathPrefix这4部分组成)和mimetype。Intent的uri可通过setData方法设置,mimetype可通过setType方法设置。隐式Intent也必须指定data。同action类似,只要Intent的data只要与Intent Filter中的任一个data声明完全相同,data方面就匹配成功。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2016年12月03日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.生命周期
  • 2.启动模式
  • 3.Activity的Flags
  • 4.IntentFilter匹配规则
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档