温馨提示:这篇文章已超过451天没有更新,请注意相关的内容是否还可用!
摘要:本文旨在帮助读者重温和理解Android开发中重要的概念——Activity生命周期。文章将详细解释Activity生命周期的各个阶段,包括创建、启动、恢复、运行、暂停和销毁等阶段,帮助开发者更好地理解Activity在Android系统中的运作机制,从而更有效地进行Android应用开发和优化。
本文将深入探讨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生命周期,从而优化应用性能。
还没有评论,来说两句吧...