Android四大组件——Activity的生命周期和启动模式

Activity是Android提供给开发者的四大组件之一,主要作用是展示视图、与用户进行交互。当用户初次启动Activity时、当用户执行跳转到另外一个Activity或切换到其他应用时,Android都会调用Activity的一系列生命周期方法,开发者可以在相应的生命周期方法处理一些必要的操作。

生命周期

Activity生命周期图

上图就是Activity很经典的生命周期图示,我们可以把Activity分成三组状态

  • onCreate和onDestroy
  • onStart、onRestart和onStop
  • onResume和onPause

Activity只能在其中三种状态之下存在很长的一段时间:

  • onResume(),此时Activity在前台并且可以和用户交互
  • onPasue(),此时Activity处于暂停状态,Activity被在前台中处于半透明状态或者未覆盖整个屏幕的另一个Activity部分阻挡
  • onStop(),此时Activity处于停止状态,Activity完全隐藏对用户不可见

其他几个状态都是短暂的状态,系统会调用下一个生命周期方法来快速转换到下一个状态

onCreate和onDestroy

当用户点击应用图标后,系统会调用app中AndroidManifest.xml文件中被声明为”launcher” (or “main”) activity中的onCreate()方法。这个Activity被用来当作程序的主要进入点。

onCreate()方法是Activity生命周期第一个回调函数,此时我们可以在onCreate()方法中初始化一些UI组件,以及实例化一些成员变量,尽量少在onCreate()方法中做太多太多事情,避免Activity启动很久后都还看不到界面,一旦onCreate操作完成,系统会马上调用onStart()方法

Activity生命周期最后一个回调函数是onDestroy(),当Activity处在后台并且系统内存不足或者我们主动调用finish()方法关闭Activity时,系统会调用onDestroy()方法(调用finish()方法关闭Activity时,系统直接调用onDestroy()方法,而不会经过onPause和onStop)。我们需要在onDestroy()方法中释放掉那些可能会造成内存泄漏的资源

onResume和onPause

当一个半透明的Activty阻塞Activty时(此时Activty不可交互),系统会调用onPause()方法并且这个Activty会停留在Paused 状态,方法中可以停止不应该在暂停过程中执行的操作,如暂停视频播放

如果用户在这个Activty还是在Paused 状态时回到这个Activty,系统则会调用它的onResume(),系统每次调用这个方法时,Activty都处于前台,包括第一次创建的时候。所以,应该实现onResume()来初始化那些在onPause方法里面释放掉的组件,如恢复用户的视频播放进度并开始播放

onStart、onRestart和onStop

当用户跳转到下一个Activity或者是直接按Home键返回主界面时,此时Activity处于对用户不可见,系统会调用onStop方法并且Activty会停留在onStop状态(不管什么原因导致Activity停止,系统总是会在onStop()之前调用onPause()方法),当系统内存不足时,系统就会调用onDestroy(),然后摧毁掉这个Activity的实例

当Activity从Stop状态回到前台时,它会调用onRestart()。系统再调用onStart()方法,onStart()方法会在每次Activity可见时都会被调用。onRestart()方法则是只在Activity从stop状态恢复时才会被调用

未完待续。。。

你可能感兴趣的:(Android四大组件——Activity的生命周期和启动模式)