【Android】重温Activity生命周期,Android,重温Activity生命周期详解,Android,重温Activity生命周期详解与解析

马肤

温馨提示:这篇文章已超过451天没有更新,请注意相关的内容是否还可用!

摘要:本文旨在帮助读者重温和理解Android开发中重要的概念——Activity生命周期。文章将详细解释Activity生命周期的各个阶段,包括创建、启动、恢复、运行、暂停和销毁等阶段,帮助开发者更好地理解Activity在Android系统中的运作机制,从而更有效地进行Android应用开发和优化。

【Android】重温Activity生命周期,Android,重温Activity生命周期详解,Android,重温Activity生命周期详解与解析 第1张

本文将深入探讨Android中的Activity生命周期,从创建到销毁,Activity经历了一系列有序的回调方法,包括onCreate()、onStart()、onResume()等,了解和正确管理Activity生命周期对于开发性能良好的Android应用至关重要,本文将帮助开发者更好地理解Activity生命周期的各个阶段,从而优化应用性能,提升用户体验。

在Android开发中,Activity是最常用的组件,其生命周期知识也是基础中的基础,大多数开发者都能说出页面新建到页面关闭会经历的生命周期方法:onCreate、onStart、onResume、onPause、onStop、onDestroy等,还有一些使用场景较少但非常重要的生命周期方法,如onWindowFocusChanged、onSaveInstanceState、onRestoreInstanceState和onRetainNonConfigurationInstance等,它们很容易被忽略或遗忘,我们来详细复习一下它们的作用及调用时机。

二、基于实时求是的原则,我亲自编写了一个demo来演示。

三、作者原创,转载请注明出处:[你的博客链接]

详细解析各个生命周期方法

1、onWindowFocusChanged

通常用于获取View的宽高,在onCreate生命周期中直接获取View的宽高会显示为0,因为View还没有绘制完成,而在onWindowFocusChanged中可以获取宽高,因为在此之前View已经绘制好了,它的调用时机在onResume和performTravesals()函数之后。

2、onSaveInstanceState

用于保存页面上的数据,以便在页面重建时恢复数据,它的调用时机分为两种情况:Android 9.0之后在onStop和onDestroy之间,Android 9.0之前在onPause和onStop之间。

3、onRestoreInstanceState

用于恢复页面上的数据,仅在页面重建时调用,正常跳转不会调用,它在onStart和onResume之间调用,页面重建的情况包括旋转屏幕、系统资源充足时恢复页面等。

4、onRetainNonConfigurationInstance

这个函数在配置变化时调用,如屏幕旋转,它的返回值是Object,可以配合getLastNonConfigurationInstance()函数获取保存的Object对象,这意味着它可以保存任意类型的数据,而onSaveInstanceState只能保存Bundle类型的数据,这也是Jetpack中ViewModel框架能保存数据的原理,但需要注意的是,如果你的Activity继承自AppCompatActivity,则无法重写这个方法,因为它在ComponentActivity中被重写为final修饰。

启动App

1、App启动到MainActivity的日志流程。

2、跳转到DemoActivity1的日志流程。

3、从DemoActivity1回退到MainActivity的日志流程。

屏幕旋转

当屏幕旋转时,Activity会经历onPause、onStop、onDestroy、onCreate、onStart、onRestoreInstanceState和onResume等生命周期方法,onSaveInstanceState用于保存数据状态,onRestoreInstanceState用于恢复数据状态。

彩蛋

细心的读者可能注意到了许多掉帧的日志,但这与本文主题无关,保留这些日志是为了验证一个结论,关于掉帧的问题,建议开发者检查应用中的主线程是否进行了过多的工作,以避免影响应用的性能和用户体验。

本文详细解析了Android中Activity的生命周期方法,并通过demo演示了它们的调用时机和作用,了解和正确管理Activity生命周期对于开发性能良好的Android应用至关重要,希望本文能帮助开发者更好地理解Activity生命周期,从而优化应用性能。


0
收藏0
文章版权声明:除非注明,否则均为VPS857原创文章,转载或复制请以超链接形式并注明出处。

相关阅读

  • 【研发日记】Matlab/Simulink自动生成代码(二)——五种选择结构实现方法,Matlab/Simulink自动生成代码的五种选择结构实现方法(二),Matlab/Simulink自动生成代码的五种选择结构实现方法详解(二)
  • 超级好用的C++实用库之跨平台实用方法,跨平台实用方法的C++实用库超好用指南,C++跨平台实用库使用指南,超好用实用方法集合,C++跨平台实用库超好用指南,方法与技巧集合
  • 【动态规划】斐波那契数列模型(C++),斐波那契数列模型(C++实现与动态规划解析),斐波那契数列模型解析与C++实现(动态规划)
  • 【C++】,string类底层的模拟实现,C++中string类的模拟底层实现探究
  • uniapp 小程序实现微信授权登录(前端和后端),Uniapp小程序实现微信授权登录全流程(前端后端全攻略),Uniapp小程序微信授权登录全流程攻略,前端后端全指南
  • Vue脚手架的安装(保姆级教程),Vue脚手架保姆级安装教程,Vue脚手架保姆级安装指南,Vue脚手架保姆级安装指南,从零开始教你如何安装Vue脚手架
  • 如何在树莓派 Raspberry Pi中本地部署一个web站点并实现无公网IP远程访问,树莓派上本地部署Web站点及无公网IP远程访问指南,树莓派部署Web站点及无公网IP远程访问指南,本地部署与远程访问实践,树莓派部署Web站点及无公网IP远程访问实践指南,树莓派部署Web站点及无公网IP远程访问实践指南,本地部署与远程访问详解,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南,树莓派部署Web站点及无公网IP远程访问实践详解,本地部署与远程访问指南。
  • vue2技术栈实现AI问答机器人功能(流式与非流式两种接口方法),Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法探究,Vue2技术栈实现AI问答机器人功能,流式与非流式接口方法详解
  • 发表评论

    快捷回复:表情:
    评论列表 (暂无评论,0人围观)

    还没有评论,来说两句吧...

    目录[+]

    取消
    微信二维码
    微信二维码
    支付宝二维码