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生命周期详解
子曰:溫故而知新,可以為師矣.<論語> 学习技术也一样,对于技术文档或者经典的技术书籍来说,指望看一遍就完全掌握,那基本不大可能,所以我们需要经常回过头再仔细研读几遍,以领悟到作者的思想精 ...
随机推荐
- shell脚本学习指南
一.UNIX各个工具所支持的正则表达式: 二.使用sed在某一目录下建立一份目录备份: find /home/foo/ -type d -print | #找出/home/foo/目录下所有目录文件 ...
- php高级研发或架构师必了解---很多问题面试中常问到!
一.mysql相关知识 1. mysql优化方式 MYSQL 优化常用方法 mysql 性能优化方案 2.如何分库分表 ...
- WinCE项目应用之虚拟仪器(VI)
虚拟仪器技术就是利用高性能的模块化硬件,结合高效灵活的软件来完成各种测试.测量和自动化的应用.虚拟测量仪器(VI)概念由美国国家仪器公司NI(National Instruments)提出,并引发了传 ...
- notepad++编译并运行java (自定义包)
最近用Notepad++写汇编,感觉用起来挺顺手,于是想能不能也在这个优秀的编辑器下编写java并编译运行呢,因为每次启动eclipse都要挺长时间,而且eclipse实在太占内存了... 于是各种百 ...
- CSS样式----图文详解(二):css属性
主要内容 CSS的单位 字体属性 文本属性 背景属性 列表属性 盒子模型 定位属性:position.float.overflow.z-index等 导航栏的制作 鼠标的属性cursor 滤镜的介绍 ...
- POJ2955Brackets[区间DP]
Brackets Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 6585 Accepted: 3534 Descript ...
- NOIP2012借教室[线段树|离线 差分 二分答案]
题目描述 在大学期间,经常需要租借教室.大到院系举办活动,小到学习小组自习讨论,都需要 向学校申请借教室.教室的大小功能不同,借教室人的身份不同,借教室的手续也不一样. 面对海量租借教室的信息,我们自 ...
- NVIDIA显卡设置
在玩3D游戏时,因为我的显卡不是特别给力,所以针对性能做出牺牲质量换取性能的调整. 简单设置 简单的方法是,3D设置-通过预览调整图像设置,根据偏重点来设置平衡:性能或者质量. 高级设置 如果你想自行 ...
- HTML常用标签跟表格
<html> --开始标签 <head> 网页上的控制信息 <title>页面标题</title> </head> <body& ...
- HTML 学习笔记 JavaScript(事件)
事件流: 事件流: 描述的是从页面中接收事件的顺序 也可以理解为事件在页面中传播的顺序: 事件: 就是用户或浏览器自身执行的某种动作 例如 click(点击) load(加载) mouseover(鼠 ...