activity经常呈现给用户全屏的WINDOW,但是也能作为一个浮动窗口 (via a theme with windowIsFloating set)
或者内嵌在另一个 ActivityGroup 中@H_301_2@
entire lifetime 发生在ONCREATE和ONDESTROY之间@H_301_2@
它将做所有的setup of "global" state在CREATE中,释放所有资源在ONDESTROY中@H_301_2@
visible lifetime 在ONSTART和ONSTOP之间@H_301_2@
在此期间用户能看到他在屏幕上,尽管他可能不在foreground and interacting with the user@H_301_2@
在这期间你能维护需要SHOW给用户的资源。@H_301_2@
例如你能注册一个 BroadcastReceiver in onStart区件事那些影响UI的变化@H_301_2@
卸载它在ONSTOP,当用户不能再看到石。@H_301_2@
foreground lifetime 在ONRESUME,ONPAUSE之间。@H_301_2@
处在PAUSE,STOP,DESTROY的ACT是能被KILLED,因此你应该用ONPAUSE去写持久化数据@H_301_2@
另外@L_403_3@ 被调用在放置ACT到背景状态之前,允许你去保存一些动态实例状态@H_301_2@
将被接收到在ONCREATE。@H_301_2@
注意如果要保存持久化数据应该在ONPAUSE中而不是ONSAVE..中,因为后者不处于生命周期回调函数。@H_301_2@
当配置改变时,ACT将被摧毁( onPause(),onStop(),and onDestroy( ))将被重新创建@H_301_2@
(当然在@L_403_3@ 保存的将被重新拿到)@H_301_2@
设置android:configChanges 也能绕过上述流程@H_301_2@
如果在这个属性没被提到的配置改变了,ACT将被重启而 onConfigurationChanged(Configuration 不将被调用。@H_301_2@
保存持久化数据一般有俩中方法sqlite database using a content provider and internal state such as user preferences@H_301_2@
能立即持久就立即持久,这样当去另一个ACT时,那个ACT就能利用到@H_301_2@
或者当ONPAUSE被调用时,这确保那些变化将被即将启动的ACT所能看见。@H_301_2@
use preferences去共享在多个APP部件(ACT,SER,RECEIVER,PROVIDE)间的@H_301_2@
Process Lifecycle@H_301_2@
foreground activity ,他的进程将被最后杀@H_301_2@
visible activity visible to the user but not in the foreground@H_301_2@
background activity 如果这个进程被杀,那么当从上面的ACT,user navigates back to它时,@H_301_2@
他的ONCREATE将被调用带着在 onSaveInstanceState 保存的一些数据,以便他能RESTART@H_301_2@
empty process 这样的进程属于比如说没有任何ACT,SERVCE,BROADCASRRECEIVER类@H_301_2@
因为这个原因,所以对已那些比较重要的背景进程(不再ACT中的)must be executed in the context of an activity BroadcastReceiver or Service to ensure that the system knows it needs to keep your process around. @H_301_2@
如果一个ACT需要做些耗时的操作并且独立于ACT生命周期的,你应该把他放在SERVICE中@H_301_2@
(他将作为比其他非可视化APP更重要的进程)@H_301_2@