首先我们先来看一下官方的Android的生命周期图:

根据这个流程图我们可以看到Activity的生命周期一共有7个方法,那么接下来我们就来聊聊这些方法执行过程。

首先在两个Activity(MainActivity和SecondActivity)的生命周期方法中打印log以便观察

 package com.example.barbrothers.blogproject;

 import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.view.View; public class MainActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e("==Activity生命周期测试A==","onCreate");
} @Override
protected void onStart() {
super.onStart();
Log.e("==Activity生命周期测试A==","onStart");
} @Override
protected void onResume() {
super.onResume();
Log.e("==Activity生命周期测试A==","onResume");
} @Override
protected void onPause() {
super.onPause();
Log.e("==Activity生命周期测试A==","onPause");
} @Override
protected void onStop() {
super.onStop();
Log.e("==Activity生命周期测试A==","onStop");
} @Override
protected void onRestart() {
super.onRestart();
Log.e("==Activity生命周期测试A==","onRestart");
} @Override
protected void onDestroy() {
super.onDestroy();
Log.e("==Activity生命周期测试A==","onDestroy");
}
public void onClick(View v){
startActivity(new Intent(this,SecondActivity.class));
}
}
 package com.example.barbrothers.blogproject;

 import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log; public class SecondActivity extends AppCompatActivity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Log.e("==Activity生命周期测试B==","onCreate");
} @Override
protected void onStart() {
super.onStart();
Log.e("==Activity生命周期测试B==","onStart");
} @Override
protected void onResume() {
super.onResume();
Log.e("==Activity生命周期测试B==","onResume");
} @Override
protected void onPause() {
super.onPause();
Log.e("==Activity生命周期测试B==","onPause");
} @Override
protected void onStop() {
super.onStop();
Log.e("==Activity生命周期测试B==","onStop");
} @Override
protected void onRestart() {
super.onRestart();
Log.e("==Activity生命周期测试B==","onRestart");
} @Override
protected void onDestroy() {
super.onDestroy();
Log.e("==Activity生命周期测试B==","onDestroy");
} }

1.启动Activity A:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity A进入运行状态。

2.当前Activity A被其他Activity B覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity A的执行,然后Activity B会调用onCreate(),onStart(),onResume()方法,然后如果Activity B覆盖了这个Activity A则ActivityA会调用onStop()方法。

3.当前Activity A由被覆盖状态回到前台或解锁屏:系统会调用onRestart(),onStart(),onResume()方法,再次进入运行状态。

4.当前Activity处于被覆盖状态或者后台不可见状态,即第2步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。

5.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。

ANDROID基础ACTIVITY篇之Activity的生命周期(一)的更多相关文章

  1. 无废话Android之activity的生命周期、activity的启动模式、activity横竖屏切换的生命周期、开启新的activity获取他的返回值、利用广播实现ip拨号、短信接收广播、短信监听器(6)

    1.activity的生命周期 这七个方法定义了Activity的完整生命周期.实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环: (1)Activity的完整生命周期 自第一次调用onCrea ...

  2. Android 中Activity生命周期分析:Android中横竖屏切换时的生命周期过程

    最近在面试Android,今天出了一个这样的题目,即如题: 我当时以为生命周期是这样的: onCreate --> onStart -- ---> onResume ---> onP ...

  3. Android 基础 二 四大组件 Activity

    Activity Intent IntentFilter 一理论概述 一. Activity 用来提供一个能让用户操作并与之交互的界面. 1.1 启动 startActivity(Intent int ...

  4. iOS系列 基础篇 03 探究应用生命周期

    iOS系列 基础篇 03 探究应用生命周期 目录: 1. 非运行状态 - 应用启动场景 2. 点击Home键 - 应用退出场景 3. 挂起重新运行场景 4. 内存清除 - 应用终止场景 5. 结尾 本 ...

  5. iOS系列 基础篇 04 探究视图生命周期

    iOS系列 基础篇 04 探究视图生命周期 视图是应用的一个重要的组成部份,功能的实现与其息息相关,而视图控制器控制着视图,其重要性在整个应用中不言而喻. 以视图的四种状态为基础,我们来系统了解一下视 ...

  6. 17.(转) Android之四大基本组件介绍与生命周期

    Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器. 一:了解四大基本组件 Activity ...

  7. android拾遗——四大基本组件介绍与生命周期

    Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器. 一:了解四大基本组件 Activity ...

  8. Android中startService的使用及Service生命周期

    Android中有两种主要方式使用Service,通过调用Context的startService方法或调用Context的bindService方法.本文仅仅探讨纯startService的使用.不 ...

  9. Servlet基础(二) Servlet的生命周期

    Servlet基础(二) Servlet的生命周期 Servlet的生命周期可以分为三个阶段: 1.初始化阶段 2.响应客户请求阶段 3.终止阶段 Servlet的初始化阶段 在下列时刻Servlet ...

随机推荐

  1. Python系列之lambda、函数、序列化

    lambda 在python中使用lambda来创建匿名函数,而用def创建的方法是有名称的,除了从表面上的方法名不一样外,python lambda还有哪些和def不一样呢? 1 python la ...

  2. Vue与swiper想结合封装全屏轮播插件

    项目需求介绍: 1.页面图文混排, 2.点击图片后全屏展示图片,并在底部显示文字,如果没有则不显示 3.关闭全屏后依然停留在上次浏览的位置 4.浏览图片时,不管点击的哪张图片,全屏展示的时候也要显示这 ...

  3. JavaWeb之response响应中文乱码问题

    response向页面响应中文乱码问题  字节流 * 有可能乱码,与中文转换成字节数组.浏览器打开的默认字符编码有关 * 解决方式:将中文转成字节数组的时候和浏览器默认打开的时候采用的字符集一致 re ...

  4. Linux系统初始化过程及运行级别简介

    Linux开机过程: 1 开机自检(BIOS):初始化硬件,查找启动介质 2 MBR引导 3 GRUB引导菜单:GRUB程序安装在Bootloader 4 加载内核(kernel) 5 运行INIT进 ...

  5. http中错误代码的含义整理

    HTTP网页错误代码大全带解释 HTTP 400 - 请求无效HTTP 401.1 - 未授权:登录失败HTTP 401.2 - 未授权:服务器配置问题导致登录失败HTTP 401.3 - ACL 禁 ...

  6. [#1] YCbCr与RGB的转换公式

    1 YCbCr简介 YCbCr颜色空间是将RGB颜色空间进行坐标转换后得到的,常用于数字电视系统.Y取值范围:16~235 Cb.Cr的取值范围:16~240 YCbCr经常和YUV混淆.两者的主要差 ...

  7. 使用Hexo+Github一步步搭建属于自己的博客(基础)

    前言:电脑系统为window 10专业版,64位 相关步骤: 1.安装Node.js和配置好Node.js环境,打开cmd命令行,成功界面如下 2.安装Git和配置好Git环境,安装成功的象征就是在电 ...

  8. base64减少图片请求

    1. 使用base64减少 a)            2. 页面解析 CSS 生成的 CSSOM 时间增加 Base64 跟 CSS 混在一起,大大增加了浏览器需要解析CSS树的耗时.其实解析CSS ...

  9. LeetCode 105. Construct Binary Tree from Preorder and Inorder Traversal (用先序和中序树遍历来建立二叉树)

    Given preorder and inorder traversal of a tree, construct the binary tree. Note:You may assume that ...

  10. Robot Framework自动化测试框架初探

    Robot Framework是一款python语言编写,通用的功能自动化测试框架.它使用了比较易用的表格数据语法,基于关键字驱动测试,主要用来验收测试和验收测试驱动开发(ATDD). 本文主要介绍R ...