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生命周期详解
子曰:溫故而知新,可以為師矣.<論語> 学习技术也一样,对于技术文档或者经典的技术书籍来说,指望看一遍就完全掌握,那基本不大可能,所以我们需要经常回过头再仔细研读几遍,以领悟到作者的思想精 ...
随机推荐
- linux centos6.5 ftp网页vsftpd配置
安装命令centos下 yum install vsftpd 出现“Complete!”时意味着安装完成.Linux中,系统对于大小写严格区分,比如abc和ABC是完全不相同的字符,要特别注意.配置V ...
- 基于Qt5.5.0的sql,C++备忘录软件的编写
我的第一个软件. 基于Qt5.5.0的 sql ,C++备忘录软件version1.0的编写 我用的Qt版本是5.5.0免配置编译器的版本,这里附上我使用的软件下载地址:http://download ...
- 必须知道的八大种排序算法【java实现】(二) 选择排序,插入排序,希尔算法【详解】
一.选择排序 1.基本思想:在要排序的一组数中,选出最小的一个数与第一个位置的数交换:然后在剩下的数当中再找最小的与第二个位置的数交换,如此循环到倒数第二个数和最后一个数比较为止. 2.实例 3.算法 ...
- [译] 企业级 OpenStack 的六大需求(第 1 部分):API 高可用、管理和安全
全文包括三部分: 第一部分:API 高可用和管理以及安全模型 第二部分:开放架构和混合云兼容 第三部分:弹性架构和全球交付 引言 OpenStack 是构造企业级私有云的非常理想的基础.它立志成为新一 ...
- 好好写,好好干-PHP基础(二)
hi 好久没写,昨儿一写,感觉还是有人看的,至少是有一两个评论的~~好好干! 每天需要坚持的就那么4件事儿:写这个,学一点法语,看会儿书,锻炼.单身狗也有好处. 1.PHP 一.PHP基础(二) 1. ...
- MIT 6.824 : Spring 2015 lab1 训练笔记
源代码参见我的github: https://github.com/YaoZengzeng/MIT-6.824 Part I: Word count MapReduce操作实际上就是将一个输入文件拆分 ...
- Appium学习实践(二)Python简单脚本以及元素的属性设置
1.简单的Python脚本 Appium中的设置与Appium学习实践(一)简易运行Appium中的一致 Launch后,执行脚本 #coding:utf-8 import unittest impo ...
- HDU 5139 Formula --离线处理
题意就不说了,求公式. 解法: 稍加推导能够得出 : f(n) = n! * f(n-1) , 即其实是求: ∏(n!) ,盲目地存下来是不行的,这时候看见条件: 数据组数 <= 100000 ...
- string、math类、random随机数、datetime、异常保护
今天讲的知识点比较多,比较杂,以至于现在脑子里还有点乱,慢慢来吧... string (1)string.length; (获得你string字符串的长度) (2)a = a.Trim(); 重新赋值 ...
- BigDecimal.ROUND_HALF_XXX的各种用法
在银行.帐户.计费等领域,BigDecimal提供了精确的数值计算.其中8种舍入方式值得掌握. 1.ROUND_UP 舍入远离零的舍入模式. 在丢弃非零部分之前始终增加数字(始终对非零舍弃部分前面的数 ...