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 ...
随机推荐
- PE格式第四讲,数据目录表之导入表,以及IAT表
PE格式第四讲,数据目录表之导入表,以及IAT表 一丶IAT(地址表) 首先我们思考一个问题,程序加载的时候会调用API,比如我们以前写的标准PE 那么他到底是怎么去调用的? 他会Call 下边的Jm ...
- cookie存储中文
写cookie Cookie chineseCookie = new Cookie( "chineseCookie ", URLEncoder. ...
- Jmeter脚本录制方法(二)——手工编写脚本(jmeter与fiddler结合使用)
jmeter脚本录制方法可以分三种,前几天写的一篇文章中,已介绍了前两种,今天来说下第三种,手工编写脚本,建议使用这一种方法,虽然写的过程有点繁琐,但调试脚本比前两者方式都要便捷. 首先来看下三种方式 ...
- SQL Server2008安装教程
SQL Server2008安装教程 第一步,打开文件,点击开始安装: 第二步,打开后点击左边项的安装,选择右边第一项: 第三步,点击确定: 第四步,选择接受服务条款,点击下一步: 第五步,按着一 ...
- 【解决方案】Django管理页面无法显示静态文件
[问题描述]:Django管理界面无法获取页面的css样式文件.图片等静态文件.调试模式下看到静态url显示404. [问题原因]:跟踪源码可以发现,静态文件的url是由Django自带的app(dj ...
- win10 UWP 显示地图
微软自带的地图很简单 引用地图xmlns:Map="using:Windows.UI.Xaml.Controls.Maps" 写在<Page> 然后在Grid 用Map ...
- 华为笔试题--LISP括号匹配 解析及源码实现
在17年校招中3道题目AC却无缘华为面试,大概是华为和东华互不待见吧!分享一道华为笔试原题,共同进步! ************************************************ ...
- Vue 国际化 vue-i18n 用法详解
vue-i18n 仓库地址:https://github.com/kazupon/vue-i18n 兼容性: 支持 Vue.js 2.x 以上版本 安装方法:(此处只演示 npm) npm insta ...
- 深入理解 Linux 的 RCU 机制
欢迎大家前往腾讯云社区,获取更多腾讯海量技术实践干货哦~ 作者:梁康 RCU(Read-Copy Update),是 Linux 中比较重要的一种同步机制.顾名思义就是"读,拷贝更新&quo ...
- C# 8.0的三个令人兴奋的新特性
C# 语言是在2000发布的,至今已正式发布了7个版本,每个版本都包含了许多令人兴奋的新特性和功能更新.同时,C# 每个版本的发布都与同时期的 Visual Studio 以及 .NET 运行时版本高 ...