回顾基础知识--第一章:Activity的生命周期和启动模式

最近在读任玉刚的Android开发艺术探索,为了方便之后复习,下面做一下笔记.

对于Activity的生命周期相信知道安卓的最熟悉不过了,但是,我还是有了新的认识.之前,认为在onResume()时Activity才是可见的,其实不是,在onStart()就已经可见了,只是在后台而已,在onStop()后Activity才不可见.关于这个周期的划分,大家可以参考这篇博客:

Android之Activity,Fragment生命周期探知,这篇博客写的很详细,我主要分析一下Activity的启动模式.

Activity的启动模式一共四种:standard,singleTop,singleTask,singleInstance.根据我自己的理解阐述一下.


1)standard:标准模式,就是只要开启就创建一个新的实例,系统默认是这样的形式,所以这个模式可能在任务栈中有多个,比较明显的就是点击返回按钮会看到多次


2)singleTop:栈顶复用模式,如果我们要开启的activity位于栈顶,我们将复用这个Activity,他的onCreate(),onStart()将不会被调用.


3)singleTask:栈内复用模式,这个让我有了新的认识,这种模式的activity有自己指向的任务栈,


如果这个任务栈S存在,需要在看这个实例A是否存在,


如果不存在直接创建A;


如果存在就调用onNewIntent()方法,而且会把其上面的activity给请出栈.BACD变成BA.


如果这个任务栈S不存在,我们要先创建任务栈S,之后在创建实例A添加到任务栈S中.

4)singleInstance:单实例模式,这个模式更霸道,自己单独一个栈,存放activity,也就是只要任务栈没有被系统销毁,我们就无需创建Activity.


我们可以使用dumpsys命令:adb shell dumpsys acitivity命令查看activity的任务栈信息.intent和Manifest都可以设置启动模式,但是manifest不能直接给Activity设置FLAG_ACTIVITY_CLEAR_TOP,需要搭配FlAG_ACTIVITY_TASK一起设置,相当于singleTask模式.而intent也无法为activity设置singleInstance模式.


还有就是显示意图和隐式意图,隐式意图在manifest文件中配置,我们通过设置action,category,data与manifest文件进行匹配.如果manifest文件中三个属性都设置了,那么我们在Intent中就必须设置action和data,category可有可无,不过如果有的话,category中的每一个配置必须可以再manifest找到.而action和data只要有和manifest中的一直的就可以.这是我理解的,还需要敲一下代码验证一下.


data中的mimeType和URI对于这个概念之前有点模糊,现在印象更深了.mimeType是媒体类型,uri和我们方位的网址差不多,有主机名,端口号等等.uri默认的是content和file.感觉有点像抄书,不过这些是自己理解的,还比较浅显,之后要自己敲代码验证一下

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值