Activity的生命周期收藏备用,新手必看

Android官方文档里对Activity的生命周期有比较详尽的描述,但由于资源回收机制带来不确定性,我们的程序运行结果常常与预期的不符,而调试这类问题又十分消耗时间和精力。解决的根本办法还是要理解透Activity的生命周期及相关内容,这篇帖子着重介绍Activity生命周期本身,之后会用一两篇帖子来介绍如何处理异常的状态变化。

下图是官方文档里的Activity生命周期图,其中彩色标出的四个框是Activity的四种状态,当Activity的状态改变时会触发一个或多个onXXX()方法。

onCreate()

当Acitivity第一次被创建时触发,一般在这里要做的事情包括创建视图(setContentView())、向视图填充必要的数据等等。

onRestart()

这个我比较少用到,按文档上的介绍,如果Activity之前被stop过,那么下一次onStart()方法之前会先触发这个方法。

onStart()

只要Activity从不可见变成可见,就会触发到这个方法,但被AlertDialog遮挡/显示的情况不算在内。

onResume()

当Activity来到最上层的时候,也就是开始与用户直接交互时,触发这个方法。例如本来Activity被一个AlertDialog遮挡,当这个AlertDialog消失时,onResume()方法就被触发。

onPause()

和onResume()的触发条件刚好相反,如果Activity本来在最上层,当它要让出最上层的位置时会触发这个方法。onPause()和onResume()是被触发最频繁的两个方法,所以在这里不应该执行过于消耗资源的方法。

onStop()

当有其他Activity覆盖了当前Activity时,不论另一个Activity是新开始的还是从下层移至最上层的,当前Activity的onStop()方法都会被触发。

onDestroy()

Activity生命周期的终点。有两种情况会导致它被触发:1)执行了Activity#finish()方法;2)Android系统由于资源不足等原因决定杀掉Activity所在进程。通过isFinishing()方法可以判断出是哪种情况。在这个方法里,我们一般要做的事情是释放Activity占有的资源,例如后台正在进行的下载线程等等。

最后,举个实际例子来说明,假设你有一个“首页Activity”和一个“编辑页Activity”。

  • 当用户点击首页里的“开始编辑”按钮时,首页的onPause()->onStart()onStop()依次触发,编辑页的onCreate()->onStart()->onResume()依次触发;(感谢James.H.Fu指出的错误)
  • 当用户在编辑页按下“返回”按钮时,编辑页的onPause()->onStop()依次触发,之后首页的onStart() -> onResume()依次触发;
  • 这时用户在首页按下“返回”按钮,首页的onPause()->onStop()->onDestroy()依次触发。

参考资料:

Activity Lifecycle
Simplest Android Activity Lifecycle
Activity lifecycle explained in details

Activity的生命周期收藏备用,新手必看

时间: 2024-10-20 20:25:21

Activity的生命周期收藏备用,新手必看的相关文章

Android开发艺术探索——第一章:Activity的生命周期和启动模式

Android开发艺术探索--第一章:Activity的生命周期和启动模式 怀着无比崇敬的心情翻开了这本书,路漫漫其修远兮,程序人生,为自己加油! 一.序 作为这本书的第一章,主席还是把Activity搬上来了,也确实,和Activity打交道的次数基本上是最多的,而且他的内容和知识点也是很多的,非常值得我们优先把他掌握,Activity中文翻译过来就是"活动"的意思,但是主席觉得这样翻译有些生硬,直接翻译成"界面"可能更好,的确,Activity主要也是用于UI效

Android Activity Fragment 生命周期

从开源项目中看到 这个,就不由自主的收藏了~ https://github.com/xxv/android-lifecycle Android Activity Fragment 生命周期

四大组件之Activity(上)——Activity的生命周期、系统回收、系统配置改变的影响

第1节 Activity的使用 Activity几乎是每个应用必有的组件,所以任何安卓应用的开发几乎都是从Activity开始的. 比如,你希望设计一个计算器应用,要呈现这个计算器的功能(显示出计算器的样子,实现计算的能力)一定会在这个应用中创建一个Activity,让这个Activity展示的界面就是计算器. 所以使用Android Studio创建工程以后,会默认为我们创建一个Activity组件,它继承自Android SDK的Activity类. class CalulatorActiv

Activity及其生命周期

Activity及其生命周期 一.Activity初步认识:[创建.配置.启动Activity] (一).创建Activity: 创建Activity:继承于Activity或其子类,重写onCreate()方法. (二).Activity的注册配置: 作为四大组件之一的Activity,必须要在AndroidManifest清单文件中进行注册.如果没有配置,而又在程序中启动了该Activity,将抛出异常(ActivityNotFoundException). 注册配置的核心代码: <appl

第一章:Activity的生命周期和启动模式

Activity是Android中四大组件之首,所以需要重视,尤其是启动方式,在AndroidManifest.xml中的注册信息 (一)Activity的生命周期 1.1.1 正常情况下的生命周期 说明 (1)针对一个特定的Activity,第一次启动顺序:onCreate->onStart->onResume. (2)当用户打开新的Activity或者切换到桌面的时候,回调如下:onPause->onStop (3)返回原Activity时,回调如下:onRestart->on

Activity的生命周期

Android学习之Activity的生命周期 Android应用程序的不能自己控制他们自己的进程,但是Android运行时可以管理每个进程.因此正确的理解Activity的生存期,对于保证用户有个良好的体验有着很大的帮助. 1. Activity栈及状态 Activity栈是当前正在运行的所有Activity后进先出的集合.新启动的Activity始终在栈顶.Activity有四种种状态. 活动状态   当Activity处于栈顶,也就是Activity是可见的,具有焦点的Activity,此

Android:Activity的生命周期

Activity的生命周期 oncreate:Activity对象创建完毕,但此时不可见 onstart:Activity在屏幕可见,但是此时没有焦点 onResume:Activity在屏幕可见,并且获得焦点 onPause:Activity此时在屏幕依然可见,但是已经没有焦点 onStop:Activity已经不可见了,但是此时的Activity的对象还在内存中 onDestroy:Activity对象被销毁

【Android基础篇】Activity的生命周期

Google开发者文档 http://developer.android.com/reference/android/app/Activity.html 应用的每个页面都是一个Activity,这些Activity都存放在一个Activity栈中,每次进入某个应用或者应用的某个界面时,新界面这个Activity就压入到Activity栈的顶部:退出或返回的时候就把栈顶的Activity弹出,之前的Activity就又到了栈顶. Activity生命周期里的四个状态 - Running : Act

014_01关于Activity的生命周期

关于生命周期图资源很多,不再粘贴.从代码运行来看看Activity的生命周期. 1 package com.example.day14_01activitylifecycle; 2 3 import android.app.Activity; 4 import android.content.Intent; 5 import android.os.Bundle; 6 import android.util.Log; 7 import android.view.View; 8 9 public c