《第一行代码:Android》学习笔记:Activity生命周期

《第一行代码:Android》 郭霖(著)

Activity所在的栈为后进先出(Last In First Out)结构。

Activity状态

  1. 运行状态(S1):

    • 该Activity处于与User交互的状态,即是位于栈顶的Activity。
    • 系统一般不考虑回收该处内存。
  2. 暂停状态(S2):
    • Activity不再处于栈顶(Another activity comes in front of the activity),但仍然是可见的。
    • 系统只有在内存极低时才考虑回收内存。
  3. 停止状态(S3):
    • Activity不处于栈顶&完全不可见(The activity is no longer visible)。
    • 系统会保存该Activity相应的状态和变量,但内存被回收的几率增大,即不能保证该Activity没有被回收。(Process is killed)
  4. 销毁状态(S4):
    • Activity从栈中被移除(调用finish()或点击Back键)。
    • 重点回收该状态下的Activity占用的内存。

Activity生存期

  1. onCreate()

    • Activity被创建时调用,完成各种初始化操作。
  2. onStart()
    • Activity由不可见(invisible)变为可见(invisible)时调用。
  3. onResume()
    • Activity准备好与User交互时调用,此时activity一定位于栈顶(S1).
  4. onPause()
    • 调用了其他Activity(不再位于栈顶),关键数据会被保存,但仍处于可见状态(visible, S2).
  5. onStop()
    • Activity变为不可见(invisible)时调用(S3)。
  6. onDestroy()
    • Activity被销毁前调用(S4)。
  7. onRestart()
    • Activity由停止状态变为运行状态前调用(S3→S1,即不可见→可见)。
    • 由于onStop()时Activity的内存可能已经被回收,所以在调用onStart()变为可见前要调用onRestart()作准备。

补充

  • 除了onRestart()外,其余生存期为一一对应关系
  • onCreate() vs onDestroy()
  • onStart() vs onStop()
  • onResume vs onPause()
时间: 2024-08-06 20:06:59

《第一行代码:Android》学习笔记:Activity生命周期的相关文章

android学习笔记 activity生命周期&任务栈&activity启动模式

activity生命周期 完整生命周期 oncreate->onstart->onresume->onpause->onstop->ondestory 使用场景:应用程序退出自动保存数据 ondestory oncreate 可视生命周期 onstart->onresume->onpause->onstop 使用场景:应用程序最小化 暂停的操作 onstop onstart 前台生命周期 onresume->onpause 界面用户仍然可见,但是失去焦

《第一行代码》2章 Activity生命周期理解

启动模式 中singleTask  的理解,举个例子,2个activity  firstActivity second Activity, 点一个切换到第二个,再点第一个切换到第一个,这个时候 firstActivity 是reStart, 而不创建,而secondActivity会销毁,因为它在栈的最上边,firstActivity把它替换掉,所以就onDestroy; 只要不再显示就会执行onStop(),没有销毁就会经历onRestart(),onStart()重新变得可见. 比较好的演示

Android小笔记Activity生命周期

Activity生命周期: onCreate()创建----->onStart()开始------>onResume()获取焦点----->Activityrunning 运行------>onPause()|-页面跳转---->App process killed----->onCreate()重新创建一个界面: |-失去焦点------->onStop()|-应用并没有停止按home键回到应用时-- -->onRestart()重新开始 |-应用停止--

《第一行代码》学习笔记1-Android系统架构

1. 2013.10,Andy Rubin创办Android公司.2005.8,Google收购之,并于2008年推出Android系统第一个版本. 2. ①Linux Kernel:基于Linux 2.6. Display Driver:基于Linux的帧缓冲(Frame Buffer)驱动. Camera Driver:常用的基于Linux的v412(Video for Linux)的驱动.   Bluetooth Driver:基于IEEE 802.15.1标准的无线传输技术. Flash

《第一行代码》学习笔记 第 2 章

第 2 章 先从看得到的入手,探究活动 知识点1:在活动中使用 Menu 在 res 目录下新建一个 menu 文件夹,右击 menu文件夹→New→Android XML File,文件名输入 main 在 main.xml 中添加如下代码: <menu xmlns:android="http://schemas.android.com/apk/res/android" > <item android:id="@+id/add_item" and

20172327 2017-2018-2 《第一行代码Android》第一章学习总结

学号 2017-2018-2 <第一行代码Android>第一章学习总结 教材学习内容总结 - Android系统架构: 1.Linux内核层 Android系统是基于Linux内核的,这一层为Android设备的各种硬件提供了底层的驱动,如显示驱动,音频驱动,照相机驱动,蓝牙驱动,Wi-Fi驱动,电源管理等. 2.系统运行底层 - 通过一些C/C++库来为Android系统提供了主要的特性支持 库名 功能 SQLite库 提供数据库的支持 OpenGL/ES库 提供3D绘图支持 Webkit

历时一年,我的著作《第一行代码——Android》火爆预售!

前言 其实我当初决定开始写博客的想法挺简单的,觉得自己搞技术这么多年了,总应该要留下点什么.既然没能写出什么出色的应用,那至少也要留下点文字分享给大家,以指引在我后面的开发者们,毕竟我也从前辈们的博客那里受惠了很多. 受邀 下定决心之后我就开始了我的博客之旅,令我没想到的是,我写的文章竟然非常受大家的欢迎,短时间内就聚集了大量的人气.更令我没想到的事,在我开始写博客不久之后,人民邮电出版社图灵公司的副总编辑陈冰先生就联系上了我,希望我可以写一本关于Android开发技术的书籍! 陈冰,第一次听到

历时一年,我的著作《第一行代码——Android》已出版!

前言 事实上我当初决定開始写博客的想法挺简单的,认为自己搞技术这么多年了,总应该要留下点什么.既然没能写出什么出色的应用,那至少也要留下点文字分享给大家,以指引在我后面的开发人员们,毕竟我也从前辈们的博客那里受惠了非常多. 受邀 下定决心之后我就開始了我的博客之旅,令我没想到的是,我写的文章居然非常受大家的欢迎,短时间内就聚集了大量的人气.更令我没想到的事,在我開始写博客不久之后,人民邮电出版社图灵公司的副总编辑陈冰先生就联系上了我,希望我能够写一本关于Android开发技术的书籍! 陈冰,第一

《第一行代码——Android》封面诞生记

<第一行代码——Android>已经上市快一个月了,目前销售情况还算良好,也是特别感谢众多朋友的支持.其实一本书如果想要卖的好,除了内容必 须要给力之外,封面的设计也是至关重要的,而本书的封面无疑是在充实的内容之外又披上了一层华丽的外衣.作为作者,其实我的任务就是将内容写好而已,其它 所有相关工作都不是由我负责的.本书封面设计的所有细节都是由陈冰先生一手抓起的,之后他在图灵社区上记录了本书封面的诞生过程.在经过他同意的情况下, 我将这篇文章转到我的博客上,也是让感兴趣的朋友们了解一些不为人知的

Android学习笔记-Activity&Intent

界面activity_main.xml <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"     xmlns:tools="http://schemas.android.com/tools"     android:layout_width="match_parent"     android:layout_height="matc