这几天工作比较忙,基本没有什么时间更新播客了。

趁着今晚有点时间,我们来简单说一下什么是Activity生命周期和它们各阶段的特征

什么是生命周期

  在还没有接触android开发的时候,听到有人说Activity生命周期的时候,觉得这是一个很专业很深奥的东西。

但是在了解过之后,原来并不是那么一回事,这个Activity生命周期其实是很基础的东西,明白他们的原理对我们以后开发

编写优秀程序有很大帮助。

  生命周期其实就是一个东西从出生到消亡的这段时间,那么Activity生命周期又是怎么一回事呢?

我们先借用官方的一张图说明一下,看下面的图。

从图中可见,在Activity的生命周期中,在不同的阶段都由不同他的函数控制它们的行为。当然这个行为可以由用户自己决定。

我们先不看图片左边的箭头,我们看的是图片中间和右边的部分。

周期第一阶段:活定阶段,即从lanucned到running阶段。

特征:处于窗口最前端,整个Activity都可以被用户看见

函数执行顺序:onCreate()->onStart()->onResume()

为了证明这些函数是确确实实被执行的,我们编写以下代码:

 1 package com.aidevelops.activitys;
 2
 3 import android.app.Activity;
 4 import android.os.Bundle;
 5 import android.util.Log;
 6
 7 public class MainActivity extends Activity {
 8
 9     @Override
10     protected void onCreate(Bundle savedInstanceState) {
11         super.onCreate(savedInstanceState);
12         setContentView(R.layout.activity_main);
13         Log.d("Active", "onCreate method started");
14     }
15
16     @Override
17     protected void onResume() {
18         super.onResume();
19         Log.d("Active", "onResume method started");
20     }
21
22     @Override
23     protected void onStart() {
24         super.onStart();
25         Log.d("Active", "onStart method started");
26     }
27
28
29
30 }

View Code

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是我们点击后退键的时候触发的

大家有兴趣的可以自己写代码测试。只需要像上面的代码一样,覆盖相应的声明周期函数,填入你想测试的代码就可以了。

贴上完整代码:

 1 package com.aidevelops.activitys;
 2
 3 import android.app.Activity;
 4 import android.content.Intent;
 5 import android.os.Bundle;
 6 import android.util.Log;
 7 import android.view.View;
 8
 9 public class MainActivity extends Activity {
10
11     @Override
12     protected void onCreate(Bundle savedInstanceState) {
13         super.onCreate(savedInstanceState);
14         setContentView(R.layout.activity_main);
15         Log.d("Active", "onCreate method started");
16     }
17
18     @Override
19     protected void onResume() {
20         super.onResume();
21         Log.d("Active", "onResume method started");
22     }
23
24     @Override
25     protected void onStart() {
26         super.onStart();
27         Log.d("Active", "onStart method started");
28     }
29
30     @Override
31     protected void onPause() {
32         super.onPause();
33         Log.d("Active", "onPause method started");
34     }
35
36     @Override
37     protected void onRestart() {
38         super.onRestart();
39         Log.d("Active", "onRestart method started");
40     }
41
42     @Override
43     protected void onStop() {
44         super.onStop();
45         Log.d("Active", "onStop method started");
46     }
47
48     public void onClickStartActivity(View view)
49     {
50         Intent intent = new Intent(this, TargetActivity.class);
51         startActivity(intent);
52     }
53
54 }

View Code

那么知道这些东西对我们有什么作用,我们后面继续讲,因为博主已经累了,呵呵,大家都早点睡吧,早睡早起身体好,:-)

转载于:https://www.cnblogs.com/ai-developers/p/android_activity_lifecycle.html

android开发------Activity生命周期相关推荐

  1. Android笔记 activity生命周期 Tasks and back stack回退栈

    正常打开一个应用,先后调用Activity的onCreate.onStart.onResume 正常退出一个应用,先后调用Activity的onPause.onStop.onDestroy(进程被杀死 ...

  2. HOME键窥探Android的Activity生命周期

    HOME键窥探Android的Activity生命周期 好久没有写技术博客了,前两篇博客写的都是一些自己的所见所闻和心里感受,今天说一说Android中的Activity的生命周期,此篇文章使用HOM ...

  3. 监控android App Activity生命周期

    说下场景: 1,监控当前应用生命周期 2,调试应用,接手一个庞大的应用,快速知道当前是那个activity ,或者 fragment(会在另一篇中讲) 3,如果你正常开发SDK ,当时你又想获取当前的 ...

  4. Android的Activity生命周期模拟程序及解析

    当Activity处于Android应用中运行时,它的活动状态由Android以Activity栈的形式管理.当前活动的Activity位于栈顶.随着不同应用的运行,每个Activity都有可能从活动 ...

  5. 【Android】Activity生命周期

    转载至:http://blog.csdn.net/liuhe688/article/details/6733407 子曰:溫故而知新,可以為師矣.<論語> 学习技术也一样,对于技术文档或者 ...

  6. Android的Activity生命周期以及模式

    Activity生命周期 Activity启动:onCreate()->onStrat()->onResume(); 点击Home返回:onPause()->onStop() 新Ac ...

  7. 【Android】Activity生命周期(亲测)

    测试手机:Nexus 5   系统:4.4 一.测试 测试代码: 1 package com.example.androidalarm; 2 3 import android.app.Activity ...

  8. ios+android+次留,边做iOS边学Android(三):Activity生命周期+通信

    边做iOS边学Android(一):新建一个project 边做iOS边学Android(二):认识几个常用的控件 趁着不忙赶紧多写点,鬼知道后面又有什么需求要忙... 这次就看一下Activity的 ...

  9. Android:Activity生命周期

    2019独角兽企业重金招聘Python工程师标准>>> 参考: <第一行代码:Android> 郭霖(著) Activity所在的栈为后进先出(Last In First ...

最新文章

  1. Spring JDBC详解
  2. angular 打印 lodop 引入css样式
  3. R语言基本操作函数(1)变量的基本操作
  4. python朋友圈为什么这么火-看我如何用Python发一个高逼格的朋友圈
  5. 控制台一直报错, [WDS] Disconnected!
  6. P3327 [SDOI2015]约数个数和 (mobius反演)
  7. PyFlink 开发环境利器:Zeppelin Notebook
  8. linux pid文件找不到,linux – 当’正确’时,PID文件是否仍有缺陷?
  9. python数据挖掘学习笔记】十三.WordCloud词云配置过程及词频分析
  10. 金三银四 | 吃透这套题,面试更有底气
  11. 如何以管理员方式管理文件
  12. 梅花雨的日历控件在ASP.NET2.0下不可用的解决方法
  13. 微星主板黑苹果_组装电脑哪个主板好?如何选择电脑主板?2020年电脑主板推荐及分析。...
  14. CSDN 原力 -- beta 测试中
  15. Matlab矩阵的运算
  16. WIN7的IE11中安装activex控件
  17. 手把手教你如何生成自己的二维码
  18. python解开压缩文件6位纯数字密码
  19. centos7查看进程ps_查看进程之ps命令
  20. 2012腾讯实习招聘笔试附加题1求解方法

热门文章

  1. 【读书笔记】沉默的大多数
  2. c语言程序设计教程 实验十,清华大学出版社-图书详情-《C语言程序设计实验教程》...
  3. lcx转发3389数据
  4. 打开VMware的系统出错
  5. 深入浅出无人机姿态,欧拉角,四元数,指数表示及数据转换与程序实现
  6. LeetCode每日一题 977. 有序数组的平方
  7. em算法怎么对应原有分类_[PRML]序列数据 HMM维特比算法及扩展
  8. weak_ptr指针编程实验
  9. 两个字符串的删除操作
  10. (转到C区)[献给想深入学习网络编程的朋友] C,C++网络编程学习简明指南