Activity生命周期解说
前言:
一直想着写一些Android基础知识分享给大家。可是有时候又认为怕写不好误导了大家学习Android。思前想后认为还是去Android官网看看,发如今Android官网上事实上就能学习到非常多知识,而且最新的知识他都会及时的更新,所以决定依照官网带领大家学习Android知识,在中间会穿插本人在做项目时的一些体会和总结。
应用程序的入口:
全部学习Android的基本上都从学习Activity開始,由于它是Android的大门。相当于Java程序的入口函数main()。当你查看一个Java项目时你肯定想到的是从它的入口函数main()開始,一步一步的深入去看这个项目的逻辑是怎么展开的,查看Android项目也不例外,可是它的入口不是main函数。而是主Activity类。
在Activity中有一些特定的方法称为生命周期函数(也叫回调函数)。这些函数不须要你去调用它,而是会自己主动的被Android系统调用,Android系统会依据用户的操作调用这些生命周期函数,比方用户点击了应用图标来启动应用程序,Android系统就会调用应用程序中主Activity的onCreat()方法,用户按返回键则会触发onPause()函数,你所须要做的就是利用这些生命周期函数,把你的逻辑写在恰当的位置。
理解Activity生命周期:
怎么利用生命周期函数?首先是要理解Activity的生命周期。在Android官网上有一张以下的图片,它绘制的就是一个Activity生命周期金字塔。
在上图中每个生命周期中的状态(Created、Started、Resumed、Paused、Stoped、Destroyed)能够看做是组成金字塔的每个台阶,这些台阶是通过一些生命周期函数才干到达的。
在用户点击应用图标启动应用程序的时候是从金字塔最底层。经过onCreat()、onStart()、onResume()这几个函数一步一步走向金字塔顶峰,这几个函数都是Android系统帮你调用的。不须要你处理。你要做的是在这几个函数中做好程序的初始化工作。当到达金字塔顶部Resumed状态时应用程序获取了最大的前台执行权限,用户才干与应用程序进行交互,比方进行聊天、点击应用程序的其它功能等。当用户离开应用程序的时候Android系统会调用Activity的onPause()、onStop()、onDestroy()方法,一步一步从金字塔顶层退下来,在从顶层退下来的时候也能够从新回到顶层。
理解三个状态:
Activity中的Created、Started、Resumed、Paused、Stoped、Destroyed这七个状态仅仅有三个状态能够精巧存在一段时间。其它的状态非常快就会过去。
这三个状态是:
- Resumed状态:
在这个状态下Activity处于前台活动状态。也就是能够和用户进行交互的状态。也叫执行状态。
- Paused状态:
在这个状态Activity界面部分被其它Activity遮挡,无法响应用户的全部操作。
- Stopped状态:
在这个状态Activity全然被隐藏。对于用户是不可见的状态,应用程序在后台。进入这个状态时,Activity的状态信息要被保留下来。
对于其它状态仅仅是短暂的停留,不如系统调用onCreate()后,它迅速调用onStart(),紧接着onResume()。
生命周期注意事项:
对于Activity的生命周期在实际项目中的怎么应用你须要记住下面几点:
- 在用户用你的应用程序时,假设有来电或者用户切换到其它应用,你的应用程序不能出现异常退出,比方非常严重的崩溃(crash)或者无响应(ANR);
- 在用户不再使用你的应用时,及时释放掉你应用程序占用的系统资源,比方在程序进入后台时要停掉一些不必要的线程;
- 在用户离开你的应用的时候要保存用户当前的状态,再用户再次回到你的应用的时候恢复之前的状态;
- 在进行横竖屏切换的时候要满足上面的第一和第三条规则。
以上是Activity生命周期的基本知识。下一篇文章将会结合代码解说Activity生命周期函数。
假设大家有什么疑问和问题请关注我的微信公众号:coder_online给我反馈。
本文属原创,转载请注明出处。违者必究
关注微信公众平台:程序猿互动联盟(coder_online),你能够第一时间获取原创技术文章,和(java/C/C++/Android/Windows/Linux)技术大牛做朋友,在线交流编程经验,获取编程基础知识,解决编程问题。程序猿互动联盟。开发者自己的家。
Activity生命周期解说的更多相关文章
- 基础总结篇之中的一个:Activity生命周期
子曰:溫故而知新,能够為師矣.<論語> 学习技术也一样,对于技术文档或者经典的技术书籍来说,指望看一遍就全然掌握,那基本不大可能,所以我们须要常常回过头再细致研读几遍,以领悟到作者的思想精 ...
- 文章之间的基本总结:Activity生命周期
孔子:温故而知新.它可以作为一个教师.<论语> 同样的学习技巧.对于技术文件或书籍的经典技术,期待再次看到它完全掌握,这基本上是不可能的,所以,我们常常回来几次,然后仔细研究,为了理解作者 ...
- 文章之间的基本总结Activity生命周期
子曰:溫故而知新,能够為師矣.<論語> 学习技术也一样,对于技术文档或者经典的技术书籍来说,指望看一遍就全然掌握,那基本不大可能,所以我们须要常常回过头再细致研读几遍,以领悟到作者的思想精 ...
- [转]: 两分钟彻底让你明白Android Activity生命周期(图文)!
转自:http://blog.csdn.net/android_tutor/article/details/5772285 大家好,今天给大家详解一下Android中Activity的生命周期,我在前 ...
- Activity生命周期(深入理解)
今天看到一篇大神总结Activity的文章,内容甚为详细,特此转载http://www.cnblogs.com/lwbqqyumidi/p/3769113.html Android官方文档和其他不少资 ...
- Android Activity生命周期
从android api文档摘抄出来的activity生命周期图如下: Activity有如下四种状态 a.活动状态 activity处于屏幕前台,获取到了焦点可以和用户进行交互,同一时刻只有一个a ...
- Android Activity生命周期详讲
管理 Activity 生命周期 通过实现回调方法管理 Activity 的生命周期对开发强大而又灵活的应用至关重要. Activity 的生命周期会直接受到 Activity 与其他 Activit ...
- android Activity生命周期(设备旋转、数据恢复等)与启动模式
1.Activity生命周期 接下来将介绍 Android Activity(四大组件之一) 的生命周期, 包含运行.暂停和停止三种状态,onCreate.onStart.onResume.o ...
- android开发------Activity生命周期
这几天工作比较忙,基本没有什么时间更新播客了. 趁着今晚有点时间,我们来简单说一下什么是Activity生命周期和它们各阶段的特征 什么是生命周期 在还没有接触android开发的时候,听到有人说Ac ...
随机推荐
- 《Python CookBook2》 第一章 文本 - 每次处理一个字符 && 字符和字符值之间的转换
文本 - 总结: 什么是文本Python 中的string 类型是不可变类型.文本,一个字符的矩阵,每一个单独的文本快可以被缩进和组织起来. 基本的文本操作①解析数据并将数据放入程序内部的结构中:②将 ...
- 学习Python编程的11个资源
用 Python 写代码并不难,事实上,它一直以来都是被声称为最容易学习的编程语言.如果你正打算学习 web 开发,Python 是一个不错的选择,甚至你想学游戏开发也可 以从 Python 开始,因 ...
- 只有IE能上网,其他浏览器均不可以!
今天起来,高高兴兴的来到实验室,发现电脑打开上不了网.本人平时喜欢用Chrome,发现上不了网,就开始ping.发现可以ping通,但是网页打不开! 第一反应是DNS的问题,可以发现DNS没问题,能正 ...
- [apkAnalyzer] 查看APK包名
最近项目中要用到APK的包名,必应到apkAnalyzer这个软件可以用,下载解压后,看到这么些jar,bat文件不知道怎么用. 参考了这篇文章,看的也不甚明白,最后还是试出来了,这里记录一下. 首先 ...
- Activity生命周期与状态保存
弹出系统对话框,程序仍部分可见 onPause 对话框消失时 onResume 调用一个新的Activity,老的Activity不可见时 onPause->onStop 从新的Activi ...
- Install_ruby
Install rvm 1 2 3 $ curl -L get.rvm.io | bash -s stable $ source ~/.bashrc $ source ~/.bash_profile ...
- 12306验证图片的bug
刚才有人告诉我12306验证码换了,于是我就打开了看了看,点了点.oh no , i am really sorry ,12306.
- LeetCode 232 Implement Queue using Stacks
Implement the following operations of a queue using stacks. push(x) -- Push element x to the back of ...
- HDU ACM 1496 Equations
Equations Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- Spring SimpleJdbcTemplate Querying examples
Here are few examples to show how to use SimpleJdbcTemplate query() methods to query or extract data ...