Activity生命周期-基于实验的最新总结

不说太多废话,先上两张最基本的图吧

简单说明一下:

1. onCreate()

它会在活动第一次被创建的时候调用。你应该在这个方法中完成活动的初始化操作,比如说加载布

局、绑定事件等。

2. onStart()

这个方法在活动由不可见变为可见的时候调用。

3. onResume()

这个方法在活动准备好和用户进行交互的时候调用。此时的活动一定位于返回栈的

栈顶,并且处于运行状态。

4. onPause()

这个方法在系统准备去启动或者恢复另一个活动的时候调用。我们通常会在这个方

法中将一些消耗 CPU 的资源释放掉,以及保存一些关键数据,但这个方法的执行速度

一定要快,不然会影响到新的栈顶活动的使用。

5. onStop()

这个方法在活动完全不可见的时候调用。它和 onPause()方法的主要区别在于,如

果启动的新活动是一个对话框式的活动,那么 onPause()方法会得到执行,而 onStop()

方法并不会执行。

6.
onDestroy()

这个方法在活动被销毁之前调用,之后活动的状态将变为销毁状态。

7.
onRestart()

这个方法在活动由停止状态变为运行状态之前调用,也就是活动被重新启动了

8. onSaveInstanceState:

当某个activity变得“容易”被系统销毁时,该activity的onSaveInstanceState就会被执行,除非该activity是被用户主动销毁的,例如当用户按BACK键的时候。

注意上面的双引号,何为“容易”?言下之意就是该activity还没有被销毁,而仅仅是一种可能性。这种可能性有哪些

1、如下场景2 :一个正常的activity启动 ,然后按home键(或者长按home键启动其它程序)

2、如下场景3:一个正常的activity启动,然后按电源键关闭屏幕显示

3、如下场景5:启动一个新的Activity

4、如下场景6:横竖屏切换

总而言之,onSaveInstanceState的调用遵循一个重要原则,即当系统“未经你许可”时销毁了你的activity,则onSaveInstanceState会被系统调用,这是系统的责任,因为它必须要提供一个机会让你保存你的数据(当然你不保存那就随便你了)。

9. onRestoreInstanceState:

需要注意的是,onSaveInstanceState方法和onRestoreInstanceState方法“不一定”是成对的被调用的,onRestoreInstanceState被调用的前提是,activity A“确实”被系统销毁了(参考场景6),而如果仅仅是停留在有这种可能性的情况下,则该方法不会被调用,例如,当正在显示activity
A的时候,用户按下HOME键回到主界面,然后用户紧接着又返回到activity A,这种情况下activity A一般不会因为内存的原因被系统销毁,故activity A的onRestoreInstanceState方法不会被执行。 另外,onRestoreInstanceState的bundle参数也会传递到onCreate方法中,你也可以选择在onCreate方法中做数据还原

场景验证:

场景1、一个正常的activity从启动到销毁(back),椭圆是启动,方块中是销毁

场景2、一个正常的activity启动
,然后按home键(或者长按home键启动其它程序)

再重新启动

场景3、一个正常的activity启动,然后按电源键锁屏,然后在打开屏幕解锁平(发现其实和按home键一样)

场景4、一个正常的activity启动,然后下拉状态栏,生命周期不变

此时,点击通知栏中的通知进入到别的应用,然后再返回

场景5、点击MainActivity中的按钮进入下一个Activity(名字为ActivityOne),然后再返回

分两种情况:

第一种:

第二种:

场景6、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏也只执行一次

场景7、设置Activity的configChanges为“orientation|keyboardHidden|screenSize”时,

切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

注意:

自从Android 3.2(API 13),screen size也开始跟着设备的横竖切换而改变。所以,

在AndroidManifest.xml里设置的MiniSdkVersion和 TargetSdkVersion属性大于等于13的情况下,

如果你想阻止程序在运行时重新加载Activity,除了设置”orientation“,你还必须设置"ScreenSize"。

4.2的话,如果有问题可以再加上一个"layoutDirection"测试

总结:

其实网上关于Activity生命周期的知识很多,但是大部分内容要么不全,要么已经过时,现基于已有内容,做了部分归纳更正,希望可以方便大家学习,欢迎评论拍砖

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-14 12:11:52

Activity生命周期-基于实验的最新总结的相关文章

Fragment生命周期-基于实验的最新总结

现在很多应用的开发都是基于FragmentActivity中嵌套Fragment进行开发的,所以,如果我们能够清晰地知道他们的生命周期,那么会使我们的开发变的容易. 对于Activity的生命周期,我在之前的文章 Activity生命周期-基于实验的最新总结  中已经说的很详细了,因此本篇文章只是从实践角度来讲一下Fragment的生命周期以及Fragment与Activity生命周期的对应关系,像大多数介绍Fragment生命周期的文章一样,先上两张图: 好,言归正传 这里从实例的角度来说明一

activity生命周期的onPause和onStop

搞了这么长时间的android开发,却对一些基础的东西一直模棱两可...就比如这个onPause和onStop.如果从一个界面,跳到另一个界面,那么是调用哪个呢? 经过我的实验.搞清楚了.onPause是有活动状态变为非活动状态.onStop()是变为不可见.那么从一个页面跳到另一个页面就是依次调用onPause,onStop.看下程序: package com.example.fuhe; import android.os.Bundle; import android.app.Activity

Android Activity生命周期的几个问题

每一个Android开发者都应该知道,android系统有四个重要的基本组件,即Activity(活动).Service(服务).Broadcast Receive(广播接收器)和Content Provider(内容提供器),其中,Activity是最重要的组件,打开你手机上的APP,你眼睛所能看到的都是Activity,下面将会介绍关于Activity生命周期的几个问题. 1 Activity生命周期的8个回调函数 下图是Activity的生命周期图,相信许多人都看过不止一次,但有的人是看到

Android apk动态加载机制的研究(二):资源加载和activity生命周期管理

出处:http://blog.csdn.net/singwhatiwanna/article/details/23387079 (来自singwhatiwanna的csdn博客) 前言 为了更好地阅读本文,你需要先阅读Android apk动态加载机制的研究这篇文章,在此文中,博主分析了Android中apk的动态加载机制,并在文章的最后指出需要解决的两个复杂问题:资源的访问和activity生命周期的管理,而本文将会分析这两个复杂问题的解决方法.需要说明的一点是,我们不可能调起任何一个未安装的

Android体系结构及activity生命周期

Android的系统架构采用了分层架构的思想,如图1所示.从上层到底层共包括四层,分别是应用程序程序层.应用框架层.系统库和Android运行时和Linux内核 Android的系统架构图    每层功能简要介绍如下:  一 应用程序层 该层提供一些核心应用程序包,例如电子邮件.短信.日历.地图.浏览器和联系人管理等.同时,开发者可以利用Java语言设计和编写属于自己的应用程序,而这些程序与那些核心应用程序彼此平等.友好共处.      home:首页 contacts:联系人应用 phone:

【Android笔记】(1)—— Activity生命周期与通信

一.Activity 1.Activity状态 活动中:如果Activity在屏幕前,即是可视的,可接受用户的输入. 暂停状态:Activity失去焦点,但仍然可见. 停止状态:如果一个Activity被另一个Activity遮住了,它的状态时停止的. 2.Activity生命周期动作方法 onRestart() : Activity第一次被创建时调用,用于初始化一些数据,如View,此时处于停止状态. onStart(): Activity将要对用户可见时调用,调用后进入停止状态. onRes

Activity生命周期讲解

前言: 一直想着写一些Android基础知识分享给大家,但是有时候又觉得怕写不好误导了大家学习Android,思前想后觉得还是去Android官网看看,发现在Android官网上其实就能学习到很多知识,并且最新的知识他都会及时的更新,所以决定按照官网带领大家学习Android知识,在中间会穿插本人在做项目时的一些体会和总结. 应用程序的入口: 所有学习Android的基本上都从学习Activity开始,因为它是Android的大门,相当于Java程序的入口函数main().当你查看一个Java项

Activity生命周期的回调,你应该知道得更多!--Android源码剖析(上)

转载请标明原文地址:http://blog.csdn.net/yalinfendou/article/details/46909173[yalinfendou的博客] 学习Android近一年,最近几天总算把Activity启动的生命周期回调流程走通了,因为所涉及的知识点太多,赶快做了笔记,不然过几天就忘了.强烈推荐<Android内核剖析>这本书,虽然随着Android版本的不断迭代更新,代码变化了不少,仍具有很强的参考价值. 本篇所涉及知识点: Android 从开机到第一个Activit

简述Activity生命周期

copy from : http://gityuan.com/2016/03/18/start-activity-cycle/ 基于Android 6.0的源码剖析, 分析android Activity启动流程中ActivityManagerService所扮演的角色 一.概述 上一篇文章startActivity启动过程分析,介绍了startActivity是如何一步步创建的,再来看看生命周期的控制.先来一张官方的Activity状态转换图: Activity的生命周期中只有在以下3种状态之