文档章节

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
昨天
0
0
个帖子学会Android开发四大组件

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

wsl_Mr
2015/09/02
0
0
详解Android中的四大组件之一:Activity详解

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

达叔小生
08/07
0
0
界面开发组件Activity详解

Activity是Android中最核心的应用程序组件,是用于控制显示界面的组件。一个Activity就是一个类,该类继承了android.app.Activity,并需要重写onCreate方法,同时在AndroidManifest.xml中进行...

jz116
2012/12/16
0
1

没有更多内容

加载失败,请刷新页面

加载更多

下一页

[雪峰磁针石博客]软件测试专家工具包1web测试

web测试 本章主要涉及功能测试、自动化测试(参考: 软件自动化测试初学者忠告) 、接口测试(参考:10分钟学会API测试)、跨浏览器测试、可访问性测试和可用性测试的测试工具列表。 安全测试工具...

python测试开发人工智能安全
今天
2
0
JS:异步 - 面试惨案

为什么会写这篇文章,很明显不符合我的性格的东西,原因是前段时间参与了一个面试,对于很多程序员来说,面试时候多么的鸦雀无声,事后心里就有多么的千军万马。去掉最开始毕业干了一年的Jav...

xmqywx
今天
2
0
Win10 64位系统,PHP 扩展 curl插件

执行:1. 拷贝php安装目录下,libeay32.dll、ssleay32.dll 、 libssh2.dll 到 C:\windows\system32 目录。2. 拷贝php/ext目录下, php_curl.dll 到 C:\windows\system32 目录; 3. p...

放飞E梦想O
今天
0
0
谈谈神秘的ES6——(五)解构赋值【对象篇】

上一节课我们了解了有关数组的解构赋值相关内容,这节课,我们接着,来讲讲对象的解构赋值。 解构不仅可以用于数组,还可以用于对象。 let { foo, bar } = { foo: "aaa", bar: "bbb" };fo...

JandenMa
今天
1
0
OSChina 周一乱弹 —— 有人要给本汪介绍妹子啦

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享水木年华的单曲《中学时代》@小小编辑 手机党少年们想听歌,请使劲儿戳(这里) @须臾时光:夏天还在做最后的挣扎,但是晚上...

小小编辑
今天
54
8

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部