完整生命周期
完整的生命周期 从启动到消亡 onCreate() - onstart() - onResume() - onPause() - onStop() - onDestory()
你的activity应该在 onCreate() 方法里完成所有“全局global”状态的设置(比如定义layout),而在onDestroy() 方法里释放所有占用的资源。
例如,如果你的activity有一个后台运行的线程,用于从网络下载数据, 那么你应该在 onCreate() 方法里创建这个线程并且在 onDestroy() 方法里停止这个线程。
可见生命周期
activity的可见生存期会在 onStart() 调用和 onStop() 调用之间发生。在这期间,用户可在屏幕上看见这个activity并可与之交互。例如,当一个新的activity启动后调用了 onStop() 方法,则这个activity就无法被看见了。在这两个方法之间,你可以管理那些显示activity所需的资源。
例如,你可以在 onStart() 方法里注册一个 BroadcastReceiver 用于监控影响用户界面的改动。并且当用户不再看到你的显示内容时,在 onStop() 方法里注销掉它。系统会在activity的整个生存期内多次调用 onStart() 和onStop(),因为activity可能会在显示和隐藏之间不断地来回切换。
前台生存期
activity的前台生存期会在 onResume() 调用和 onPause() 之间发生。在这期间,activity是位于屏幕上所有其它的activity之前,并且拥有用户的输入焦点。activity可以频繁地进入和退出前台——例如, 当设备进入休眠时或者弹出一个对话框时,onPause() 就会被调用。因为这个状态可能会经常发生转换,为了避免切换迟缓引起的用户等待,这两个方法中的代码应该相当地轻量化。
生命周期的转换
当Activity显示 onCreate() - onStart() - onResume()
当Activity进入后台 onPause() - onStop()
当从后台进入前台 onRestart() - onStart() - onResume()
当A被B覆盖时候 A onPause() - B onCreate() - B onStart() - B onResume() - A onStop()
当别人打进电话: onPause -> onStop
当挂断电话: onRestart-> onStart -> onResume