当用户需要对手机通过屏幕进行交互时,比如打一个电话,拍张照片,发送一个邮件,或者查看地图。开发者就需要实现一个活动(Activity)。每个活动都将作为一个提供用户使用接口的窗口。它可以填满整个屏幕,也可以小于、大于屏幕甚至漂浮在其它窗口上面。作为android应用程序中最重要的四大组件之一。今天我们来学习一下Android中Activity的生命周期。
首先,创建一个android project,包含两个ActivityA和ActivityB
分十种情况讨论

第一,正常启动Activity A,输出结果如下:

第二,从ActivityA跳到ActivityB,并且ActivityB全屏。即ActivityA被ActivityB完全完全覆盖,输出结果如下:

第三,在第二种的情况下,从ActivityB返回到ActivityA,输出结果如下:

第四,从ActivityA跳到ActivityB,并且ActivityB非全屏。即ActivityA没有被ActivityB完全完全覆盖,输出结果如下:

第五,在第四种的情况下,从ActivityB返回到ActivityA,输出结果如下:

第六,在第一种情况下,点击home键,输出结果如下:

第七,在第六种的情况下,长按home键盘,从任务管理器中调出ActivityA,输出结果如下:

第八,在第一种情况下,点击电源键,输出结果如下:

第九,在第八种的情况下,在打开电源键回到ActivityA,输出结果如下:

第十,退出ActivityA,输出结果如下:

在对上述十种情况讨论完,可能觉得有点复杂,其实一点都不复杂,在梳理一下。首先最容易发现的是onCreate和onDestroy从头到尾都只执行了一次。onCreate在一个活动最先开始启动的时候执行了一次,onDestroy在活动结束关闭的时候执行了一次。另外可以发现除了在第四五两种情况下,其余情形的结果都相同,离开活动A,则A一次执行onPause和onStop,并且返回A的时候,一次执行onRestart、onStart和onResume。于是可以得出如下结论。只要不是在A进入到非全屏的其它活动中,则A执行onPause和onStop,反之只执行一个onPause,从其它活动返回,A执行onRestart、onStart和onResume,反之执行onResume。

在测试四五两种情况的时候,只要在AndroidManifest.xml中队ActivityB的节点中添加如下一行代码:

android:theme="@android:style/Theme.Dialog"

附活动ActivityA代码:

package com.yuxianglong.view;import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;/*** * @ClassName: ActivityA* @Description: 对Activity生命周期的测试,重载了onCreate,onStart,onResume,*                 onStop,onPause*               onDestroy,onRestart七个方法* @author yuxianglong* @date 2013-7-9 上午9:09:22* */
public class ActivityA extends Activity {private Button button;private String Tag = "yuxlong2010";@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.d(Tag, "I'm  onCreate");setContentView(R.layout.activity_a);button = (Button) findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {// TODO Auto-generated method stubstartActivity(new Intent(ActivityA.this,ActivityB.class));}});}@Overrideprotected void onStart() {// TODO Auto-generated method stubsuper.onStart();Log.d(Tag, "I'm  onStart");}@Overrideprotected void onResume() {// TODO Auto-generated method stubsuper.onResume();Log.d(Tag, "I'm  onResume");}@Overrideprotected void onStop() {// TODO Auto-generated method stubsuper.onStop();Log.d(Tag, "I'm  onStop");}@Overrideprotected void onDestroy() {// TODO Auto-generated method stubsuper.onDestroy();Log.d(Tag, "I'm  onDestroy");}@Overrideprotected void onRestart() {// TODO Auto-generated method stubsuper.onRestart();Log.d(Tag, "I'm  onRestart");}@Overrideprotected void onPause() {// TODO Auto-generated method stubsuper.onPause();Log.d(Tag, "I'm  onPause");}
}

图解:Activity生命周期相关推荐

  1. Activity 生命周期图解

    Android应用组件Activity是Android程序的呈现层,显示可视化的用户界面,并接收与用户交互所产生的界面事件.对于一个Android应用程序来说,可以包含一个或多个Activity,一般 ...

  2. 基础总结篇之一:Activity生命周期

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

  3. activity生命周期及数据保存

    为什么80%的码农都做不了架构师?>>>    public class ActivityLife extends Activity {// 在Activity生命周期开始时被调用@ ...

  4. Android activity生命周期

    这篇博客主要包含以下知识点: activity介绍. activity生命周期的详细过程(不同情况下的变化以及状态的改变).finish和onDestory方法的关系.onSaveInstanceSt ...

  5. framework之Activity 生命周期解析(基于Android11源码)

    引言 上一篇讲了Activity的创建过程(没看过的小伙伴移步 点我前往).由于篇幅的问题,只分析到OnCreate周期,那这一篇就接着讲余下部分的周期. 在高版本上,activity的周期都是以事务 ...

  6. View的生命周期方法和Activity生命周期方法关系

    View 是在Activity 中使用到的,所以在自定义View的时候,我们需要了解Activity 生命周期方法和View的生命周期方法调用先后顺序.  见如下图 (1) 在Activity onC ...

  7. activity 生命周期_死磕Android_App 启动过程(含 Activity 启动过程)

    1. 前言 Activity是日常开发中最常用的组件,系统给我们做了很多很多的封装,让我们平时用起来特别简单,很顺畅.但是你有没有想过,系统内部是如何启动一个Activity的呢?Activity对象 ...

  8. Android Activity生命周期举例说明(图文)

    同学电话面试提及到Activity生命周期的详细说明,现整理如下: 转载请标明姓名及出处:大飞_Rflyee - http://blog.csdn.net/rflyee/article/details ...

  9. 【Android 应用开发】Activity生命周期 与 Activity 之间的通信

    一. Activity生命周期 上图 1. Activity状态 激活状态 : Activity出于前台 , 栈顶位置; 暂停状态 : 失去了焦点 , 但是用户仍然可以看到 , 比如弹出一个对话框 , ...

最新文章

  1. 字节跳动 录屏功能_一周盘点:Instagram打通视频购物功能 公开叫板TikTok;字节跳动要大力布局跨境出口电商?...
  2. Python中从cmd获得.py文件的参数
  3. AAD Connect 微软官方的描述准确吗?
  4. caffe转caffe2
  5. MySQL常用简单小命令
  6. Arduino--Mlx90614红外温度传感器(额温枪芯片)
  7. 【SpringBoot集成ElasticSearch 02】Java HTTP Rest client for ElasticSearch Jest 客户端集成(配置+增删改查测试源码)【推荐使用】
  8. Mysql使用kill命令解决死锁问题(杀死某条正在执行的sql语句)
  9. 数据中心里的应急关机技术
  10. canal mysql从库_canal中间件|数据增量同步解决方案
  11. vue中 key 值的作用
  12. echarts-map的使用
  13. python建立ip代理池_如何建Python爬虫的IP代理池?3步学会搭建IP代理池
  14. html中body写什么,HTML中body内常用标签
  15. 《Java并发编程的艺术》——锁(笔记)
  16. 黑马JAVA P121 时间日期:Date、SimpleDateformat、Calendar
  17. 【中创福利】有一种年味叫公司发年货
  18. mysql里一个中文汉字占多少字节数?
  19. JAVA web中的一点东西
  20. emoji表情符号编码大全

热门文章

  1. webpack配置路径问题
  2. 转到Servlet出现500型错误
  3. tslib编译使用方法
  4. X-Frame-Options 响应头
  5. HDU 5781 ATM Mechine(概率dp)
  6. 还没搞完的排序(后期更新)
  7. HAL——硬件抽象层读书笔记
  8. Installshield 文件及文件夹操作
  9. 这5种思维模式,大牛产品经理都在用
  10. 刚写的代码,就变成了遗留系统?