安卓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. 怎样解决WampServer #1405 - Access denied for user #39;root#39;@#39;localhost#39; (using password: NO...
  2. PHP命令空间namespace及use的用法实践总结
  3. VMware Server使用经验记录
  4. elasticsearch mapping之index
  5. 通过Java代码装配bean
  6. python selenium对象怎么序列化_python selenium爬取斗鱼
  7. Spring AOP事务管理(使用切面把事务管理起来)
  8. 关于APK文件反编译方法(图文详解)
  9. CCNA笔记-各种路由器的接口
  10. jetpack的camerax_Android开发-Jetpack组件CameraX
  11. 什么?程序员还要了解经济学?! 1
  12. Hyper-V 2016 系列教程28 Hyper-v平台USB 外设解决方案介绍
  13. Spring配置redis(自定义方法)
  14. No package ‘libmarco-private‘ found
  15. GDI GDI+ 的区别
  16. Android开发:关于高德地图轨迹纠偏,只显示两个点问题的整体概述
  17. 今天你对我爱搭不理, 明天我让你高攀不起
  18. 计算机网络---通过DNS服务器查询Web服务器的IP地址
  19. 一个阿里前端工程师的成长之路
  20. 静态内部类、静态变量的加载次数-理解静态内部类实现线程安全的单例模式

热门文章

  1. Windows7常见问答汇总二【2010.10】
  2. 国家省市县标准区域码
  3. 如何设计一条好的测试用例----打卡第二天
  4. 计算机桌面怎么截图快捷键,电脑截图的快捷键是什么_屏幕截图快捷键_怎么截图快捷键-太平洋IT百科手机版...
  5. Find My资讯|AirTag 正在帮更多人找到丢失的行李,Find My用处越来越大
  6. 水果店圈子:开水果店什么位置好,开水果店如何找位置
  7. linux服务器 木马 处理,linux 服务器中木马及木马清除
  8. 易语言5.11正式版(奋斗的小鸟)_软件下载
  9. LTE射频拉远单元数字中频方案(十)
  10. linux ln 文件夹,Linux ln 命令