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

趁着今晚有点时间,我们来简单说一下什么是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. }

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. }

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

android开发------Activity生命周期的更多相关文章

  1. Android开发——Activity生命周期

    Android开发--Activity生命周期 Activity作为四大组件之首,也是使用最频繁的一种组件.本文将主要讲解Activity生命周期,包括正常情况下的Activity生命周期和异常情况下 ...

  2. Android开发--Activity生命周期回顾理解

    Activity和Servlet一样,都用了回调机制.我们通过类比servlet来学习Activity.当一个servlet开发出来之后,该servlet运行于Web服务器中.服务器何时创建servl ...

  3. android开发之生命周期

    android开发之生命周期 一:Activity的生命周期: 这几天了了解了安卓Activity的生命周期,对于生命周期有了大概的理解: 一个Activity的生命周期也就是Activity从生成到 ...

  4. Android编程: Activity生命周期和LogCat使用

    学习内容:Activity生命周期和LogCat使用 ====Activity生命周期==== 图示(转载): 创建    onCreate重启    onRestart开始    onStart恢复 ...

  5. 浅谈Android之Activity生命周期

     Activity作为四大组件之一,出现的频率相当高,基本上我们在android的各个地方都能看见它的踪影,因此深入了解Activity,对于开发高质量应用程序是很有帮助的.今天我们就来详细地聊聊Ac ...

  6. android 17 activity生命周期

    手机指南针传感器处于手机头部. Activity生命周期: 启动. onCreat()方法:初始化布局对象,设置监听器. onstart()方法:注册监听器. onResume():activity已 ...

  7. Android之Activity生命周期简介

    概述 有图有真相,所以先上图: 上图是从Android官网截下的Activity的生命周期流程图,结构非常清晰,它描述了Activity在其生命周期中所有可能发生的情况以及发生的先后顺序,下面就将结合 ...

  8. 【Android】Activity 生命周期具体解释

    与其它编程模式不同,android中的Activity没有main()函数.我们无法决定Activity的创建和销毁过程,Activiy的创建和销毁(即生命周期)由系统完毕,系统会在Activity的 ...

  9. Android关于Activity生命周期详解

    子曰:溫故而知新,可以為師矣.<論語> 学习技术也一样,对于技术文档或者经典的技术书籍来说,指望看一遍就完全掌握,那基本不大可能,所以我们需要经常回过头再仔细研读几遍,以领悟到作者的思想精 ...

随机推荐

  1. 注意Android里TextView控件的一个小坑,用android:theme来设置样式时动态载入的layout会丢失该样式

    注意Android里TextView控件的一个小坑,用android:theme来设置样式时动态载入的layout会丢失该样式 这个坑,必须要注意呀, 比如在用ListView的时候,如果在List_ ...

  2. ganglia安装简记

    首先需要安装EPEL的源. yum install -y ganglia.x86_64 ganglia-gmetad.x86_64 ganglia-web.x86_64 ganglia-gmond.x ...

  3. ANSI Common Lisp Learn

    It has been a long time that I haven't dealt with my blog. On one hand I was preparing the exams.On ...

  4. 分布式系统理论之Quorum机制

    一,Quorum机制介绍 在分布式系统中有个CAP理论,对于P(分区容忍性)而言,是实际存在 从而无法避免的.因为,分布系统中的处理不是在本机,而是网络中的许多机器相互通信,故网络分区.网络通信故障问 ...

  5. 洛谷U4727小L的二叉树[树转序列 LIS]

    题目背景 勤奋又善于思考的小L接触了信息学竞赛,开始的学习十分顺利.但是,小L对数据结构的掌握实在十分渣渣. 所以,小L当时卡在了二叉树. 题目描述 在计算机科学中,二叉树是每个结点最多有两个子结点的 ...

  6. Strcmp(字符串1,字符串2)函数 Sizeof && strlen() Substr(a,b)

    Strcmp(字符串1,字符串2)函数 { strcmp函数是比较两个字符串的大小,返回比较的结果.一般形式是:  i=strcmp(字符串,字符串); 其中,字符串1.字符串2均可为字符串常量或变量 ...

  7. Ajax讲解

    AJAX:即"Asynchronous Javascript And XML"(异步JavaScript和XML),是指一种创建交互式网页应用的网页开发技术. AJAX = 异步 ...

  8. ajax asud模板

    <table class="table"> <tr> <th>@Html.DisplayNameFor(model=>model.Id)& ...

  9. HTML DOM 属性 对象

    HTML DOM 属性 对象 HTML DOM 节点 在 HTML DOM (Document Object Model) 中, 所有的都是 节点: 文档是文档节点 所有 HTML 元素是元素节点 所 ...

  10. SpringMVC的Ajax提交

    这种类型的提交, 必须配合 multipartResolver, $("button:submit").click(function(){ $.ajax({ type : 'POS ...