1、一个activity的整个生命时间发生在onCreate()和onDestroy()函数。你的activity应该设置全局状态(例如定义布局)在onCreate(),并且释放所有的资源在onDestroy()。例如,如果你的activity有一个线程在后台跑下载数据从网络,它可能创建那个线程在onCreate()然后停止线程在onDestroy()。
2、一个可视的生命期发生在onStart()和onStop()之间。在这期间,用户可以看见activity在屏幕上并且和它交互。例如,onStop()被调时当一个新的activity开始并且这个不再被可见。在这两个函数间,你可以维持资源那些需要用来展现activity给用户的。例如,你可以注册一个BroadcastReceiver在onStart(),然后注销在onStop()当用户不再看见你显示的东西。系统可能会调onStart(0和onStop()多次在这整个生命线期间,当activity在是否可见间转换的时候。
3、一个activity的前景生命期发生在onResume()和onPause()之间。在这期间,此activity在所有其它activity之上在屏幕上,并且拥有用户焦点。一个activity可以经常转换进和转换出前景--例如,onPause被调用当设备准备休眠蔌当一个对话框产生。因为这种状态可以经常转换,代码在这两个状态应该轻量为了避免减慢转换速度使得用户等待。
图像1陈述这些循环并且展现一个activity可以发生的状态转换路径。矩形代表你能实现的回调函数。
Figure 1. The activity lifecycle.
同样的生命周期回调函数被列在table 1,更加详细的描述了回调函数放置每一个在activity的事个生命周期,包含是否系统能杀死activity在回调函数完成后。
Table 1. A summary of the activity lifecycle's callback methods.
因为onPause()他们三个中的第一个,一量activity被建立,onPause()是最后一个被保证调用的方法--如果系统必须恢复内存在紧急状态,然后onStop()和onDestroy()可能将不被调用。因此,你应该使用onPause()来写数据(例如edit)的存储。可是,你应该精心挑选哪个信息一定要在onPause()中留住,因为任何何阻塞的操作在这个函数阻塞到下一个activity的转换因而降低用户体验。











