文档章节

Android-Activity的四状态、七生命周期、和四启动模式

北ing
 北ing
发布于 2015/10/19 19:32
字数 1281
阅读 33
收藏 2

一、四大基本组件简介:
Android四大基本组件:Activity、Service、Content Provider、Broadcast Receiver
Activity:活动视图
一个负责与用户交互的显示界面的组件。
Service:服务:一个没有界面、运行在后台的服务。
Content Provider:内容提供者,一个应用程序可以使用Content Provider来共享自己的数据,另一个应用想要使用该应用提供的数据时,可以通过ContentResolver来访问。
Broadcast Receiver:广播接收者:广播消息接收器,监听的事件源是Android应用中的其他组件。

二、概括
Android是使用任务(Task)来管理活动的,一个任务就是一组放在栈里的活动的集合,这个栈也称为返回栈,每当启动一个新的活动,它就会入栈,并处于栈顶的位置,当一个活动finish时会销毁活动,处于栈顶的活动会出栈。系统显示的总是栈顶的活动。
这里写图片描述

三、活动的四个状态
1)运行状态:当一个活动位于返回栈的栈顶时,这时活动就处于运行状态,最不会被系统回收的就是运行状态的活动
2)暂停状态:当一个活动不再处于栈顶的位置,但仍然可见,弹出一个对话框或者一个不能占满屏幕的活动都会导致前一个活动处于暂停状态,系统也不会轻易回收这样的活动,除非是内存极低的情况(回收可见的活动都会造成极不好的用户体验)
3)停止状态:当一个活动不处于栈顶位置,且完全不可见的时候,就进入停止状态,当内存较低时系统会回收这样的活动
4)销毁状态:当一个活动从栈中移除后就编程销毁状态,系统会回收这样的活动

四、活动的七大生命周期
这里写图片描述

1)onCreate()  :当Activity第一次被创建时调用,完成活动的初始化操作。
2)onStart()    :当用户可以看到这个Activity时调用
3)onResume() :当获得了用户的焦点时,就是用户点击了屏幕
4)onPause()   :当系统准备启动或回复另一个活动时调用。在这个方法中将一些小号CPU的资源释放,保存一些重要数据。
5)onStop() :当活动完全不可见是调用,当新启动的活动时对话框式的,还处于可见时,该方法是不会被调用
6)onDestroy():活动被销毁时调用
7)onRestart():当活动有停止状态变为运行状态时调用。

测试:
打开一个对话框式的活动:
这里写图片描述
打印:
这里写图片描述
当跳转到另一个活动时:
这里写图片描述

五、四种启动模式
1)standard:默认的模式,对于使用standard模式的活动,系统不管这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例。
这里写图片描述

测试:
这里写图片描述
当前Mainactivity的Id是40f76d48
点击第一个按钮:Id变为40f8bdc0,说明新创建了一个活动
这里写图片描述

2)singleTop:当活动已经处在栈顶时,再启动这个活动时直接使用它而不会再次创建这个活动的实例,可以很好的解决重复创建栈顶活动的问题
这里写图片描述
点击启动singleTop模式Activity时,跳到该界面,Id:40f979e8
这里写图片描述
再点击该界面的按钮,Id没变,说明没有创建新的实例。

3)singleTask:singleTop模式可以很好的解决重复创建栈顶活动的问题,但是当该活动没有处于栈顶时,还有可能创建多个该实例, 这时就可以用singleTask模式。当活动模式指定为singleTask模式时,每次启动该活动时,系统会在返回栈中查看是否存在该活动实例,如果 存在则直接使用,不存才创建。
这里写图片描述

测试:
点击启动singleTaskActivity,Id是:40fcd3a0
这里写图片描述
再点击这个界面的按钮,跳到主界面,注意这是这个singleTaskActivity不处在栈顶,但还在栈中。
这里写图片描述
再重复第一步操作,依然跳到这个界面,Id没有变化。
这里写图片描述

4)singleInstance:指定为singleInstance模式的活动会启用一个新的任务栈来管理这个活动。用这种模式的活动主要是为了供其他程序共享该活动,如浏览器的使用。
这里写图片描述

测试:
创建一个新的应用,包含一个用singleInstance模式的activity,运行,Id是40f78bc8
这里写图片描述
然后在主界面点击启动SingleInstance Activity,结果是从这个程序直接跳到该上面那个应用。

六、总结
掌握好活动的生命周期能清楚的知道activity当前在什么状态,这样我们就知道在什么状态该做什么。活动的启动模式各有特点,没有最好的,只有最合适的,需要根据实际情况选择合适的模式。

源码下载


© 著作权归作者所有

共有 人打赏支持
北ing
粉丝 0
博文 12
码字总数 17332
作品 0
海淀
【Android学习总结】之Activity:深入理解、体验Activity的生命周期

【本博客内的文章是本人的学习笔记总结,如有错误请各位批评指正,谢谢!欢迎加入群285077071讨论】 关于Activity的生命周期的学习,我将从以下几个方面入手来全面认识: 一、什么是生命周期...

kinbos
06/26
0
0
Android 开发 Activity的生命周期、启动模式和IntentFilter匹配规则

我们知道Android 有四大组件,其中使用最频繁的就是 Activity,可以说应用的很多界面都是Activty,所有对于Android的基础来说,我们要好好认识一下Activity. Activty的生命周期 先来看看谷歌...

maoqitian
08/19
0
0
详解Android中的四大组件之一:Activity详解

activity的生命周期 activity的四种状态 running:正在运行,处于活动状态,用户可以点击屏幕,是将处于栈顶的状态。 paused:暂停,处于失去焦点的时候,处于,可能是被如弹框一样遮盖,被通...

达叔小生
08/07
0
0
Android基础再回首——四大组件之Activity、Service俩兄弟

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/m366917/article/details/54100085 Android基础再回首——四大组件之Activity、Service俩兄弟 偶尔的回首过去...

Aduroidpc
2017/01/05
0
0
个帖子学会Android开发四大组件

黑色幽默Lion 方向比努力重要,能力比知识重要,情商比智商重要! 首页 新闻 新随笔 管理 随笔- 43 文章- 0 评论- 12 一个帖子学会Android开发四大组件 注:本文来自“友盟杯”,仅在此阅读,学...

wsl_Mr
2015/09/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

同样是工作3年程序员,为什么别人每月25K你却只有15K?

你有没有静下心来思考过:同样是做了x年Java开发,为什么你的技术比别人差很多?为什么别人每月26K你却只有15K? 其实技术水平的高低和个人智商关系不大(毕竟能做Java编程开发大家都不会差)...

Java填坑之路
4分钟前
0
0
跨域问题:解决跨域的三种方案

当前端页面与后台运行在不同的服务器时,就必定会出现跨域这一问题,本篇简单介绍解决跨域的三种方案,部分代码截图如下,仅供参考: 方式一:使用ajax的jsonp 前端代码 服务器代码 使用该方...

rechardchensir
5分钟前
0
0
linux学习-1012

8.6 管道符和作业控制 8.7/8.8 shell变量 8.9 环境变量配置文件 扩展 bashrc和bash_profile的区别 http://ask.apelearn.com/question/7719 简易审计系统: http://www.68idc.cn/help/server/...

wxy丶
5分钟前
0
0
springboot dubbo 在程序初始化完成前 使用回声测试对服务依赖检测

<dubbo:consumer timeout="10000" check="false" /><dubbo:service delay="-1" /> @Component@Order(2)public class PrkServiceInit implements ApplicationListener {private Logge......

林伟琨
7分钟前
0
0
“网红架构师”解决你的Ceph 运维难题

Q1. 环境预准备 绝大多数MON创建的失败都是由于防火墙没有关导致的,亦或是SeLinux没关闭导致的。一定一定一定要关闭每个每个每个节点的防火墙(执行一次就好,没安装报错就忽视): CentOS s...

编程SHA
11分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部