一:activity的生命周期:
二:created->resumed
当一个应用程序的启动图标被用户点击后,应用程序开始从Activity的onCreate()方法开始执行。(当有多个activity文件时,执行Manifest文件中指定的主activity文件)。
当执行完onCreate()方法后,迅速调用onStart(),onResume()方法,用户就可以进行相关的操作.
在onCreate()方法中尽量少执行操作,防止程序运行很久都进入不了界面。
三:Resumed->Paused && Paused->Resumed
当启动另一个activity造成部分阻塞时(主activity部分可见),主activity调用onPause()方法进入Paused状态。当你需要重新回到主activity时,会通过调用onResume()方法回到屏幕并可执行相关操作。
一个activity进入Paused状态后,他有可能回到屏幕,也有可能进入Stopped状态,然后进入Destryed状态关闭。
当activity进入Paused状态后,应该在onPause()方法中停止Pause状态activity的操作,释放相应的资源,以及用户期待保存的资源。
当activity重新回到Resumed状态时,应该初始化那些在Paused状态中释放的资源
四:Paused->Stopped && Stopped->started
当activity由部分阻塞变成完全阻塞(activity不可见)后,主activity调用onStop()进入Stopped状态。当你重新回到主activity时,会调用onRestart()方法.然后迅速调用onResume()方法.
当activity进入stopped状态时,Activity对象会保存在内存中,当这个activty恢复到resumed状态时,会调用保存的activity。所以不需要初始化相应的组件。
在onstop()方法中要释放不需要的资源,而在onRestart()方法中要重新创建释放的资源。
五:destroyed:
1个activity可能是正常退出(比如点击返回按钮/使用finish()方法退出),也有可能非正常退出(stop状态长时间不被使用/前台activity需要更多资源)。
在正常退出时,不会保存相关数据,但非正常退出时会保存相关数据并在下一次创建Activity实例时恢复数据。
被系统用来恢复相关数据而保存的数据叫做instance state。instance state保存在bundle对象中的key-value pairs中。
在activity非正常退出时,会通过onSaveInstanceState() 保存相关的数据到对象Bundle中。在重新创建此activity时,会将bundle对象传递给onCreate() 与 onRestoreInstanceState()。通过bundle对象来恢复数据。
参考资料:http://hukai.me/android-training-course-in-chinese/basics/activity-lifecycle/index.html.