介绍
Activity的生命周期是开发基本Android应用程序的基础。如果你不知道基本的生命周期,你就不能一开始就实现它,但是当你想要更好地控制的时候,你需要多了解一些生命周期(例如,只有在按Home键的时候改变行为)我会来的。所以这次关于Activity的生命周期,我用各种屏幕转换模式调用哪些方法检查了它。
关于Activity的生命周期
基本的生命周期方法
让我先来回顾一下Activity的生命周期。这就像下面这样。
方法名称 | 定时调用 |
---|---|
onCreate() | 活动首次创建时 |
onStart() | 活动开始时 |
onResume() | 显示活动时 |
onRestart() | 活动重新启动时 |
onPause() | 当另一个活动显示 |
onStop() | 活动不再显示 |
onDestroy() | 活动从内存中释放之前 |
这部分非常漂亮,所以Android应用程序开发人员知道这很自然。
其他生命周期方法
还有其他几种生命周期方法。虽然使用频率比上面列出的方法要低,但这是一种方便的方法。
方法名称 | 定时调用 |
---|---|
onApplyThemeResource() | 当一个主题被应用到活动 |
onPostCreate() | 当Activity的开始完成时 |
onPostResume() | 活动简历完成后 |
onActivityResult() | 当请求结果返回给另一个Activity时 |
onNewIntent() | 当一个新的意图发布和调用(单顶只) |
onSaveInstanceState() | 何时保存活动的状态 |
onRestoreInstanceState() | 由Intent调用时,恢复活动的状态 |
onUserLeaveHint() | 活动留下用户操作 |
正如你可以补充基本的生命周期方法,你可以看到它可以在不同的时间处理。如果您成功使用这些方法,您将能够控制各种细节。
确认由屏幕转换模式调用的方法
以一个日志时,所有上述方法被调用时,方法并试图验证调用它们,当你运行一些图形的屏幕转变的顺序的。
激活活动
应用程序启动后首次显示的情况就是这种情况。
onApplyThemeResource()在onCreate()之前被调用。
显示活动时按返回键
在显示活动时按下返回键关闭活动。
由于它不再返回到活动,它被调用,直到onDestroy(),它被完全销毁。
显示活动时按Home键
在显示活动时,我按下主页键并返回到主屏幕。
onUserLeaveHint()被调用。有了这个,你可以实现按Home键的过程。但是由于onUserLeaveHint()有其他的时机,所以要小心。另外,onSaveInstanceState()保存Activity的状态。
从主屏幕重新打开暂停的活动
当您启动应用程序时返回主屏幕,Activity将处于停止状态。我在那个状态下再次打开应用程序。
Activity已经生成,所以onCreate()等不被调用。 onRestart()在onStart()之前被调用。
转移到另一个活动
我放置了一个按钮,从活动A转换到活动B,并在活动A显示后转换到活动B.
OnUserLeaveHint()在活动A中被调用,变得不可见。所以,当你想到的Home键控制,onUserLeaveHint()它必须指出,也可以在过渡到另一个屏幕时进行。 ActivityA的生命周期之后,是的onSaveInstanceState完成ActivityB()和的onStop的显示()已被调用。在ActivityA隐藏之后(例如,ImageView中显示的Bitmap的销毁),我们来处理onStop()。
从其他活动返回
通过活动A→活动B转换,我按下后退键并返回到活动A.
ActivityB的onPause()被首先调用,然后Activity A重新启动。在活动A的显示结束之后,停止和销毁变得不必要的ActivityB的方法被调用。
睡眠状态,同时显示活动
屏幕关闭(睡眠状态)被设置,而活动正在显示。
调用与转换到另一个屏幕相同的方法。
从睡眠中再次显示活动
我使它睡在活动显示状态,然后再次显示。
这是正常重启的生命周期。顺便说一下,当屏幕打开时(当显示锁定屏幕时)调用这些方法。
显示活动很长时间后离开它
在很长的时间或在其中的活动停止的状态下左,其他应用的应用程序停止,或存储器请求被丢弃一次,并且当调用到下一个重新生成活性的影响。因为这种情况下可以重现,并把支票从Android 4.0的在“设置>,请不要将开发人员选项>活动”,这时候我试图使用它。
生成Activity时的正常生命周期方法似乎被调用,但是onRestoreInstanceState()是混合的。这被称为在Activity停止时恢复用onSaveInstanceState()保存的状态。
摘要
Android的屏幕过渡模式是完全不同的。您可以在启动应用程序时启动其他应用程序,也可以使用Intent在应用程序之间自由协作。根据意图类型,应用程序中有各种屏幕转换这是可以想象的。因此了解在屏幕转换中以什么顺序调用哪种生命周期方法是非常重要的。首先确保您只执行到屏幕转变正是因为线框,采取生命周期方法的日志,我认为这是个好主意把一个过程中要考虑其是否足以在任何时间以实现什么样的处理。