android源码中对Activity的各个生命周期方法注释内容【被我忽略的地方】

1.onCreate

这个方法会在Activity启动的时候被调用。在这里要执行Activity中大部分的初始化操作,如:加载布局、获取控件的引用、检索已显示数据的游标等。

在onCreate方法中调用finish方法的话,其他生命周期方法将不会再被执行,而是直接执行onDestroy方法将Activity销毁。

子类中必须在onCreate方法中调用父类的onCreate方法,否则会出现异常

2.onStart

在onCreate方法或onReStart方法后被调用。

不要在这里今次那个耗时操作

子类中必须在onStart 方法中调用父类的onStart 方法,否则会出现异常

3.onResume

在onRestoreInstanceState方法、onReStart方法、onPause方法、onStart方法后被调用。

这个方法执行后,Activity就可以和用户进行交互了。我们可以在这里执行开启动画、开启独占访问设备如相机等操作。

onResume方法不是Activity对用户可见的最精准指示器。真正可以判断是否对用户可见的方法是onWindowFocusChanged方法。

子类中必须在onResume 方法中调用父类的onResume 方法,否则会出现异常

4.onPause

在Activity切换到后台时被调用,不会销毁 Activity。

假设我们现在有A、B两个Activity。Activity A 切换到 Activity B的过程中,onPause方法在 Activity A 中被调用,知道执行完成,才会创建 Activity B。所以不要在onPause方法中执行耗时操作。

通常,onPause方法是用来执行以下几种操作的:
a.保存编辑中Activity的持续状态,为用户呈现一种“编辑准备就绪”的模型并保证在没有足够资源开始新Activity的情况下不会丢失数据,也不会销毁当前Activity。
b.关闭动画等消耗大量内存的操作
c.关闭独占访问设备如相机等

当系统内存不足时,会杀掉处于onPause状态的进程来回收资源。所以,我们需要保证在这个方法中保存了所有的状态。通常,onSaveInstanceState方法可以保存Activity中实例的状态,而onPause方法使用来保存全局持久性数据(如ContentProviders、file)的。

执行完Activity A的onPause方法后,会创建Activity B,自然会执行B的onCreate、onStart、onResume方法,之后才会执行 A的onStop方法。
注意:有时会直接跳过onStop方法直接调用A的onResume方法。

5.onStop

当Activity处于不可见状态时被调用。根据用户后续操作的不同可能会出现几种后续调用的方法:onRestart方法、onDestroy方法或什么方法也 不调用。

注意:有的情况下,onStop方法可能不会被调用,如:
a.锁屏时
b.执行完onPause方法后,系统内存不足导致Activity被销毁
c.Activity跳转时,新Activity的主题采用了透明主题

等。

6.onDestroy

在Activity被销毁之前,执行最终的清理工作。

调用finish方法或系统为回收资源而销毁Activity时,都会调用onDestroy方法。可以通过调用isFinishing方法来区分这两种情况。

注意:不要在这个方法中保存数据。

通常,onDestroy方法是用来释放资源的,如关闭Activity开启的线程或与之相关的线程。因此,一个被销毁的Activity不会留下任何与之相关的东西,而其所在的app其他部分正常运行。有很多情况下我们可以不调用onDestroy方法就可以杀掉Activity的宿主进程,所以不要在onDestroy方法中做进程被杀掉后保持相关数据的操作。

猜你喜欢

转载自blog.csdn.net/baisemaque/article/details/52461230