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 ...
随机推荐
- ZOJ 1489 HDU1395 2^x mod n = 1 数学
2^x mod n = 1 Time Limit: 2 Seconds Memory Limit:65536 KB Give a number n, find the minimum x t ...
- 一款好用的软件easyUI
easyui是一种基于jQuery的用户界面插件集合. easyui为创建现代化,互动,JavaScript应用程序,提供必要的功能. 使用easyui你不需要写很多代码,你只需要通过编写一些简单HT ...
- 使用OLAMISDK实现一个语音输入数字进行24点计算的iOS程序
前言 在目前的软件应用中,输入方式还是以文字输入方式为主,但是语音输入的方式目前应用的越来越广泛.这是一个利用 Olami SDK 编写的一个24点iOS程序,是通过语音进行输入. Olami SDK ...
- AlexNet 网络详解及Tensorflow实现源码
版权声明:本文为博主原创文章,未经博主允许不得转载. 1. 图片数据处理 2. 卷积神经网络 2.1. 卷积层 2.2. 池化层 2.3. 全链层 3. AlexNet 4. 用Tensorflow搭 ...
- 转载:C#特性-表达式树
原文地址:http://www.cnblogs.com/tianfan/ 表达式树基础 刚接触LINQ的人往往觉得表达式树很不容易理解.通过这篇文章我希望大家看到它其实并不像想象中那么难.您只要有普通 ...
- 干货|人人都是翻译项目的Master
在平时的工作中,我们都会经常查阅一些英文文档来解决平时遇到的问题和拓宽视野.看到好的文章或者书籍有没有想要和小伙伴分享的冲动,那么我们一起来翻译吧- 翻译主张 "信 达 雅" .& ...
- C# To C++ Converter Cracked ( 破解版 )
C# To C++ Converter v17.10.2 Cracked By X-Cracker 简介 C# To C++ Converter是一款将C#代码或者项目转换为C++的工具 免费版本一次 ...
- 单源最短路径问题-Dijkstra算法
同样是层序遍历,在每次迭代中挑出最小的设置为已知 ===================================== 2017年9月18日10:00:03 dijkstra并不是完全的层序遍历 ...
- MongoDB高级索引
1. 索引数组字段 创建和使用跟普通字段的索引一样. 2. 索引子文档字段: 创建索引: db.users.ensureIndex({"address.city":1," ...
- CentOS6.9中挂载NTFS移动硬盘
公司需要本地备份,不占用公网带宽,而本地服务器硬盘容量不够,所以需要将本地服务器centos 6.9系统的备份数据拷贝到移动硬盘. 所以需要在centos上挂载NTFS格式的移动硬盘. 方法/步骤: ...