android开发------Activity生命周期
这几天工作比较忙,基本没有什么时间更新播客了。
趁着今晚有点时间,我们来简单说一下什么是Activity生命周期和它们各阶段的特征
什么是生命周期
在还没有接触android开发的时候,听到有人说Activity生命周期的时候,觉得这是一个很专业很深奥的东西。
但是在了解过之后,原来并不是那么一回事,这个Activity生命周期其实是很基础的东西,明白他们的原理对我们以后开发
编写优秀程序有很大帮助。
生命周期其实就是一个东西从出生到消亡的这段时间,那么Activity生命周期又是怎么一回事呢?
我们先借用官方的一张图说明一下,看下面的图。

从图中可见,在Activity的生命周期中,在不同的阶段都由不同他的函数控制它们的行为。当然这个行为可以由用户自己决定。
我们先不看图片左边的箭头,我们看的是图片中间和右边的部分。
周期第一阶段:活定阶段,即从lanucned到running阶段。
特征:处于窗口最前端,整个Activity都可以被用户看见
函数执行顺序:onCreate()->onStart()->onResume()
为了证明这些函数是确确实实被执行的,我们编写以下代码:
package com.aidevelops.activitys; import android.app.Activity;
import android.os.Bundle;
import android.util.Log; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("Active", "onCreate method started");
} @Override
protected void onResume() {
super.onResume();
Log.d("Active", "onResume method started");
} @Override
protected void onStart() {
super.onStart();
Log.d("Active", "onStart method started");
} }
Log.d(tag, message)函数用于将指定tag的message打印到logcat控制台
我们可以将tag理解为一个分类
运行程序后打开LogCat窗口,创建一个条件过滤器
如图:

点击绿色的+号后弹出一个窗口:

注意Log.d()函数的第一个参数就是by log Tag中的Tag,第二个参数是要打印到LogCat控制台的信息
填好后点击OK。接着点刚才创建的LiifeCycle过滤器,就能看到下图的信息:

我们可以看到,每个函数都按顺序执行了。
第二阶段:暂停阶段
特征:Activity被部分遮挡。例如被半透明的窗口遮挡。
涉及的函数:onPause()、onResume()
第三阶段:停止阶段
特征:Activity完全被遮挡,例如打开了一个新的Activity。
涉及的函数:onPause()、onStop()
当用户导航回到之前停止的Activity的时候,就会触发已经停止的Activity重新启动。
涉及的函数:onRestart()->onStart()->onResume()
如图:
onPause和onStop是我们启动另一个Activity的时候触发的
而onRestart,onStart,onResume是我们点击后退键的时候触发的

大家有兴趣的可以自己写代码测试。只需要像上面的代码一样,覆盖相应的声明周期函数,填入你想测试的代码就可以了。
贴上完整代码:
package com.aidevelops.activitys; import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View; public class MainActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.d("Active", "onCreate method started");
} @Override
protected void onResume() {
super.onResume();
Log.d("Active", "onResume method started");
} @Override
protected void onStart() {
super.onStart();
Log.d("Active", "onStart method started");
} @Override
protected void onPause() {
super.onPause();
Log.d("Active", "onPause method started");
} @Override
protected void onRestart() {
super.onRestart();
Log.d("Active", "onRestart method started");
} @Override
protected void onStop() {
super.onStop();
Log.d("Active", "onStop method started");
} public void onClickStartActivity(View view)
{
Intent intent = new Intent(this, TargetActivity.class);
startActivity(intent);
} }
那么知道这些东西对我们有什么作用,我们后面继续讲,因为博主已经累了,呵呵,大家都早点睡吧,早睡早起身体好,:-)
android开发------Activity生命周期的更多相关文章
- Android开发——Activity生命周期
Android开发--Activity生命周期 Activity作为四大组件之首,也是使用最频繁的一种组件.本文将主要讲解Activity生命周期,包括正常情况下的Activity生命周期和异常情况下 ...
- Android开发--Activity生命周期回顾理解
Activity和Servlet一样,都用了回调机制.我们通过类比servlet来学习Activity.当一个servlet开发出来之后,该servlet运行于Web服务器中.服务器何时创建servl ...
- android开发之生命周期
android开发之生命周期 一:Activity的生命周期: 这几天了了解了安卓Activity的生命周期,对于生命周期有了大概的理解: 一个Activity的生命周期也就是Activity从生成到 ...
- Android编程: Activity生命周期和LogCat使用
学习内容:Activity生命周期和LogCat使用 ====Activity生命周期==== 图示(转载): 创建 onCreate重启 onRestart开始 onStart恢复 ...
- 浅谈Android之Activity生命周期
Activity作为四大组件之一,出现的频率相当高,基本上我们在android的各个地方都能看见它的踪影,因此深入了解Activity,对于开发高质量应用程序是很有帮助的.今天我们就来详细地聊聊Ac ...
- android 17 activity生命周期
手机指南针传感器处于手机头部. Activity生命周期: 启动. onCreat()方法:初始化布局对象,设置监听器. onstart()方法:注册监听器. onResume():activity已 ...
- Android之Activity生命周期简介
概述 有图有真相,所以先上图: 上图是从Android官网截下的Activity的生命周期流程图,结构非常清晰,它描述了Activity在其生命周期中所有可能发生的情况以及发生的先后顺序,下面就将结合 ...
- 【Android】Activity 生命周期具体解释
与其它编程模式不同,android中的Activity没有main()函数.我们无法决定Activity的创建和销毁过程,Activiy的创建和销毁(即生命周期)由系统完毕,系统会在Activity的 ...
- Android关于Activity生命周期详解
子曰:溫故而知新,可以為師矣.<論語> 学习技术也一样,对于技术文档或者经典的技术书籍来说,指望看一遍就完全掌握,那基本不大可能,所以我们需要经常回过头再仔细研读几遍,以领悟到作者的思想精 ...
随机推荐
- TCP连接建立系列 — 服务端接收ACK段(一)
http://blog.csdn.net/zhangskd/article/details/17923917 分类: Linux TCP/IP Linux Kernel 2014-01-07 09 ...
- 利用增量备份恢复因归档丢失造成的DG gap
故障现象:data guard归档出现gap,悲剧的是丢失的归档在主库上被rman备份时删除了,丢失的归档大约有20几个,数据库大小约2T,如果重建DG将非常耗时间,因此决定利用增量备份的方式恢复DG ...
- cloudera cdh native lib
如果通过命令行的方式安装cloudera 版本的hadoop,下载它的cdh版本. 解压后执行,你会发现报warning,没有native的库,lib/native是空的. 如何获取native的文件 ...
- DevOps Workshop 研发运维一体化第一场(微软亚太研发集团总部)
准备了近两周,写了大量的操作手册,设计了大量的动手实验场景,终于在中关村的微软大厦完成了两天的DevOps培训. 最初报名160人,按照之前的培训经验,一般能到一半就不错了,没想到这次现场登记人员就超 ...
- [麦先生]初学Laravel框架与ThinkPHP框架的不同(2)
在经过了一段时间的开发后,我对Laravel框架的认识又在逐步的加深,对于这个世界占有量NO.1的框架... 我想说,我已经在逐步的感受到他的恐怖之处... 一.建表--Laravel在数据库建表上 ...
- Learning Spark: Lightning-Fast Big Data Analysis 中文翻译
Learning Spark: Lightning-Fast Big Data Analysis 中文翻译行为纯属个人对于Spark的兴趣,仅供学习. 如果我的翻译行为侵犯您的版权,请您告知,我将停止 ...
- 【HTML】嵌入图像
img元素允许我们在HTML文档里嵌入图像. 要嵌入一张图像需要使用src和alt属性,代码如下: <img src="../img/example/img-map.jpg" ...
- CSS中单位px和em,rem的区别
PX特点: 1 IE无法调整那些使用px作为单位的字体大小: 2. 国外的大部分网站能够调整的原因在于其使用了em或rem作为字体单位: 3. Firefox能够调整px和em,rem,但是96%以上 ...
- ubuntu不能登录图形用户界面,游客身份可登陆,命令行可登陆
ubuntu是13.04版本,我猜其他的版本解决办法大概也一样.当开机进入登陆界面后我们输入密码后并没有进入应该进入的图形用户界面,而是进入一个命令行界面并且一闪而过又回到了登录界面,而已游客的身份却 ...
- ASP.NET后台获取cookie中文乱码解决办法
项目中有一功能,需要从一个页面前台使用cookie保存json数据,并传递到第二个页面.要在第二个页面中获取cookie中的json的值,没有任何处理情况下,获取的字符串为乱码,就连符号都是乱码的.百 ...