# android开发:4-1、Activity启动方式、生命周期、不同activity的数据传递

什么是Activity:

Activity是Android的四大组件之一,专门负责控制视图View与用户进行交互的活动类,在实际开发中使用频率最高的组件之一。(通俗来讲,activity就相当于界面,QQ界面、微信界面之类的)。

如何创建Activity:

Activity在创建时必须要在AndroidMainifest.xml文件中通过和标签进行注册,这样才能通过解析AndroidMainifest.xml文件中的标签找到对应的Activity进行启动。在Android studio或者eclipse中,如果通过想到方式进行创建activity,软件将会自动的在AndroidMainifest.xml文件中注册。若通过创建class的方式创建,则需要手动在AndroidMainifest.xml文件中注册。

Activity启动方式:

Activity的启动方式有4中,在不同的场景下在AndroidMainifest.xml的标签的“android:launchMode” 属性来指定启动模式,区分Activity启动方式的好处就是可以避免创建大量重复的Activity

在说明activity启动方式前,想要介绍一个概念叫做“任务栈”,每一个应用程序都有一个任务栈,用于存放activity,功能类似于函数的调用栈,不懂的小伙伴们可以自行百度。入栈的先后顺序代表了Activity的出现顺序。例如Activity的出现顺序为Activity1 -> Activity2 -> Activity3,则任务栈中的Activity顺序为:
在这里插入图片描述
有了任务栈的概念,我们就来看一下4种启动方式:

1、standard:每次激活activity都会创建一个activity实例,例如:源栈顶为activity2,再次激活activity2时,会再次创建一个activity2:
在这里插入图片描述

2、singleTop:若某个activity自己激活自己,即任务栈栈顶就是该activity,则不需要创建activity实例,其他情况则需要创建,如:
在这里插入图片描述

3、singleTask:如果要激活的activity已经存在在任务栈中,则不需要创建activity实例,只需要将此activity之上的所有实例出栈,让此activity置于栈顶即可,如:
在这里插入图片描述

4、singleInstance:此种启动模式用于多个application,当application1的任务栈已经激活了activity1,application也要激活activity1,则直接共享application1的任务栈中的activity1即可,如:
在这里插入图片描述

Activity的生命周期:

废话不多说,先看图:
在这里插入图片描述
下面我们来研究一下这张图中的7种activity方法:不废话,再来看图:
在这里插入图片描述
在这里插入图片描述

1、启动activity,调用onCreate()方法,然后调用onStart()方法,然后调用onReaume()方法,activity进入运行状态

2、当前activity被其他activity覆盖或者锁屏时,调用onPause()方法暂停当前activity

3、 当前activity由被覆盖状态回到前台或者解锁时系统调用onResume()方法,再次回到运行状态

4、当前activity转到新的activity界面或者按Home键回到主屏,自身退居后台时系统先调用onPause()方法,然后调用onStop()方法,进入停滞状态

5、用户后退回此activity,系统调用onRestart(),onStart(),onResume()方法,再次进入运行状态

6、当前activity处于被覆盖或者后台不可见状态(2和4),系统内存不足,杀死当前activity;然后用户又回到当前activity,则调用onCreate(),onStart(),onResume()方法,进入运行状态

7、用户退出当前activity,系统调用onPause(),onStop(),onDestory()方法,结束当前activity

不同Activity之间数据的传递:

由于内容较多,请看下节内容 android开发:4-2 不同Activity之间数据的传递、代码实例分析,不同Activity之间数据的传递,我会用实例代码进行分析

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值