安卓Activity生命周期相关

activity作为安卓四大组件之一,是我们在开发中使用的最频繁的组件之一。
在这里就个人所了解的一些东西,和大家分享一下下。有错误之处,多多指正。

典型生命周期

首先,activity的生命周期(从创建到被垃圾回收过程中一定会执行的方法就叫做生命周期方法)这里就放上官方文档上最经典的图吧。

大家对这幅图肯定也无比熟悉了。
一个正常典型情况下的activity启动,会经历如下生命周期:
- onCreate:activity创建时,会首先启动这个方法。一般这个方法中,我们会做一些初始化工作。
- onDestroy:activity即将被销毁时调用的方法,是生命周期的最后一个方法。一般,我们会做一些回收工作和最终的资源释放,或者是保存一些未保存的内容(比如保存信息为草稿等)
- onStart:activity正在被启动,即将开始时,这个时候activity界面可见,但是无法和用户交互,activity还在后台
- onStop:activity界面不可见时调用的方法。可以做些微重量级的回收工作。
- onResume:activity获取焦点时的方法,已经出现在前台并且开始活动。
- onResume:activity获取焦点时的方法,已经出现在前台并且开始活动。
- onPause:activity失去焦点时调用的方法,但是此时activity可见。这里可以做一些存储数据、停止动画的工作,但是不能太过耗时。因为一个新的activity的启动,onPause必须先执行完,新Activity的onResume才会调用
- onRestart:activity在重新启动。一般是用户点击home键回到桌面或者跳到新的activity时,接着用户又重新回到这个activity,界面由不可见变为可见,执行onRestart-onStart-onResume


在图中,我们发现这样的一段话[Another activity comes in front of the activity][6]调用时会首先执行onPause方法。
为什么呢?从源码角度上大概是这个流程:
首先,启动activity的请求会由Instrumentation(可以理解为一种没有图形界面的,具有启动能力的,用于监控其他类(用Target Package声明)的工具类)来处理, 它会通过代理对象binder向ActivityManagerService(简称AMS,内部维护着一个ActivityStack)发送请求,AMS通过ActivityThread去同步activity的状态。新的activity启动时,会调用ActivityStack中的resumeTopActivityInnerLocked方法,使栈顶的activity需要先onPause变为后台后,新的activity才会被启动。
这也是为什么官方文档中对onPause的说明是,不能在onPause中做重量级的操作。
代码测试如下,其实很简单,当点击第一个activity的按钮时,会跳转到

安卓Activity生命周期相关相关推荐

  1. android 如何获取离开屏幕时间,android – SurfaceHolder回调如何与Activity生命周期相关?...

    编辑:如果targetSDK大于10,将应用程序睡眠调用onPause和onStop. Source 我在我的姜饼手机上的一个小相机应用程序中查看了活动和SurfaceView的生命周期.你是完全正确 ...

  2. Android Activity生命周期管理

    http://blog.csdn.net/thl789/article/details/6628463 本文描述Android中Activity的状态,Activity的状态转换,从而总结了Activ ...

  3. 从源码看 Activity 生命周期(上篇)

    本文是我的 AOSP 系列 第六篇文章,往期目录如下: Java 世界的盘古和女娲 -- Zygote Zygote家的大儿子 -- SystemServer Android 世界中,谁喊醒了 Zyg ...

  4. 安卓学习笔记06:Activity生命周期与启动模式

    文章目录 零.学习目标 一.Activity生命周期 1.了解Activity生命周期 2.Activity生命周期简化图 (1)Activity存在与否 (2)Activity可见与否 (3)Act ...

  5. 安卓基础知识之Activity篇(一):Activity生命周期

    安卓基础知识系列旨在简明扼要地提供面试或工作中常用的基础知识,让对安卓还不太熟悉的小伙伴更快地入门.同时自己在工作中,也没法完全记住所有的基础细节,写这样的系列文章,可以让自己形成一个更完备的知识体系 ...

  6. 【安卓开发 】Android初级开发(六)Activity生命周期

    @Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setC ...

  7. activity 生命周期_死磕Android_App 启动过程(含 Activity 启动过程)

    1. 前言 Activity是日常开发中最常用的组件,系统给我们做了很多很多的封装,让我们平时用起来特别简单,很顺畅.但是你有没有想过,系统内部是如何启动一个Activity的呢?Activity对象 ...

  8. Android 深入研究之 ✨ Activity启动流程+Activity生命周期✨

    Activity分析目录 前言 Activity生命周期 1.activity的四个状态 2.activity的生命周期 3.activity优先级 Activity启动流程 Activity的启动流 ...

  9. Activity生命周期回调方法

    文章目录 Activity生命周期 一.Activity生命周期回调方法 1.onCreate() 2.onStart()回调方法 3.onResume()回调方法 4.onPause()回调方法 5 ...

最新文章

  1. 真的有人在偷听我们讲话么?
  2. 巨头间未来战争-丰收节交易会·万祥军:农业AI发展概况
  3. Hook的两个小插曲
  4. 秒杀场景_多线程异步抢单队列分析与实现_02
  5. 如何创建链接的服务器
  6. React 折腾记 - (4) 侧边栏联动Tabs菜单-增强版(结合Mobx)
  7. 并查集模板——并查集(洛谷 P3367)
  8. 大数据之-Hadoop优势_(4高)---大数据之hadoop工作笔记0011
  9. win10右下角的天气怎么关闭
  10. Java中涉及线程和并发相关的内容
  11. 建模笔记1:建立数学模型
  12. 155页4万字智慧交通电子警察系统平台解决方案
  13. java随机生成名字_java随机生成一个名字和对应拼音的方法
  14. 活水渠 - 云影院之云时代看片全攻略
  15. 西部世界IPFS科普:什么是非对称加密?
  16. Keil 5报错error C216: subscript on non-array or too many dimensions
  17. 基于Flink的JDBC插入Nested结构数据到Clickhouse
  18. 【一起入门NLP】中科院自然语言处理第13课-NLP基础任务④:序列生成问题(Seq2Seq)
  19. 简单理解与实验生成对抗网络GAN
  20. 了解什么是枚举(enumeration)

热门文章

  1. java web 通信_Java Web_Java通信
  2. 商城转账到卖家账户的支付宝方案:支付宝单笔转账
  3. win8计算机刻录功能吗,系统之家详解自带功能刻录Win8.1 32位系统盘
  4. Android自定义实现刮刮卡效果
  5. Power BI——Filter函数
  6. 宏与namespace
  7. JAVA-正三角形实现--(JAVA入门狂神说)
  8. 在线UI设计工具都有哪些?如何选择?
  9. Oracle批量导入数据(附带脚本)
  10. 2024东北大学计算机考研信息汇总