ANDROID基础ACTIVITY篇之Activity的生命周期(一)
首先我们先来看一下官方的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的生命周期(一)的更多相关文章
- 无废话Android之activity的生命周期、activity的启动模式、activity横竖屏切换的生命周期、开启新的activity获取他的返回值、利用广播实现ip拨号、短信接收广播、短信监听器(6)
1.activity的生命周期 这七个方法定义了Activity的完整生命周期.实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环: (1)Activity的完整生命周期 自第一次调用onCrea ...
- Android 中Activity生命周期分析:Android中横竖屏切换时的生命周期过程
最近在面试Android,今天出了一个这样的题目,即如题: 我当时以为生命周期是这样的: onCreate --> onStart -- ---> onResume ---> onP ...
- Android 基础 二 四大组件 Activity
Activity Intent IntentFilter 一理论概述 一. Activity 用来提供一个能让用户操作并与之交互的界面. 1.1 启动 startActivity(Intent int ...
- iOS系列 基础篇 03 探究应用生命周期
iOS系列 基础篇 03 探究应用生命周期 目录: 1. 非运行状态 - 应用启动场景 2. 点击Home键 - 应用退出场景 3. 挂起重新运行场景 4. 内存清除 - 应用终止场景 5. 结尾 本 ...
- iOS系列 基础篇 04 探究视图生命周期
iOS系列 基础篇 04 探究视图生命周期 视图是应用的一个重要的组成部份,功能的实现与其息息相关,而视图控制器控制着视图,其重要性在整个应用中不言而喻. 以视图的四种状态为基础,我们来系统了解一下视 ...
- 17.(转) Android之四大基本组件介绍与生命周期
Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器. 一:了解四大基本组件 Activity ...
- android拾遗——四大基本组件介绍与生命周期
Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器. 一:了解四大基本组件 Activity ...
- Android中startService的使用及Service生命周期
Android中有两种主要方式使用Service,通过调用Context的startService方法或调用Context的bindService方法.本文仅仅探讨纯startService的使用.不 ...
- Servlet基础(二) Servlet的生命周期
Servlet基础(二) Servlet的生命周期 Servlet的生命周期可以分为三个阶段: 1.初始化阶段 2.响应客户请求阶段 3.终止阶段 Servlet的初始化阶段 在下列时刻Servlet ...
随机推荐
- python random从集合中随机选择元素
1.使用python random模块的choice方法随机选择某个元素 from random import choice foo = ['a', 'b', 'c', 'd', 'e'] print ...
- JS在可编辑的div中的光标位置插入内容或表情
<input type="button" value="插入字符" onclick="document.getElementById('test ...
- JAVA提高四:反射基本应用
在前面一节<http://www.cnblogs.com/pony1223/p/7659210.html>,我们学习了JAVA的反射的相关知识,那么本节我们对前面所学习的知识做一个应用相关 ...
- Java 对象复制
Java 对象的一共有 3 种复制对象的方式. 1.直接赋值 (引用复制 ),此种复制方式比较常用. 诸如 A a = b ; a 是直接复制了b的引用 ,也就是说它俩指向的是同一个对象. 此时 ...
- adb获取Android性能数据
环境:Android测试环境 搭建Android测试环境: 1.下载AndroidSDK: 2.配置环境变量: (1).ANDROID_HOME (2).ANDROID_HOME-TOOLS (3). ...
- CoreCLR源码探索(七) JIT的工作原理(入门篇)
很多C#的初学者都会有这么一个疑问, .Net程序代码是如何被机器加载执行的? 最简单的解答是, C#会通过编译器(CodeDom, Roslyn)编译成IL代码, 然后CLR(.Net Framew ...
- python数据结构之树和二叉树(先序遍历、中序遍历和后序遍历)
python数据结构之树和二叉树(先序遍历.中序遍历和后序遍历) 树 树是\(n\)(\(n\ge 0\))个结点的有限集.在任意一棵非空树中,有且只有一个根结点. 二叉树是有限个元素的集合,该集合或 ...
- java中集合类HashSet、ArrayList、LinkedList总结
[HashSet] 1. HashSet存储不能够存储相同的元素,元素是否相同的判断:重写元素的equals方法.equals方法和hashCode方法必须兼容,如:equals方法判断的是用户的名字 ...
- ARM总线方面知识
AMBA简介 随着深亚微米工艺技术日益成熟,集成电路芯片的规模越来越大.数字IC从基于时序驱动的设计方法,发展到基于IP复用的设计方法,并在SOC设计中得到了广泛应用.在基于IP复用的SoC设计中,片 ...
- linux 投影仪
注:文章转自http://goo.gl/aI9Ycd如果侵权,请原作者留言,立即删除 之前在 R219 做 C++ 演講的時候,發現 Ubuntu 沒有辦法使用 VGA 輸出,臨時改用 Windows ...