**
Activity生命周期
**
Activity的生命周期共有七种:
- onCreate()
- onStart()
- onResume()
- onRestart()
- onPause()
- onStop()
- onDestroy()
一个正常的Activity启动过程为:
2019-04-13 12:26:40.417 1694-1694/com.example.lifecircletest D/MainActivity: MainActivityonCreate()
2019-04-13 12:26:40.417 1694-1694/com.example.lifecircletest D/MainActivity: MainActivityonStart()
2019-04-13 12:26:40.418 1694-1694/com.example.lifecircletest D/MainActivity: MainActivityonResume()
当被其他Activity覆盖或回到桌面时,会相继执行onPause()、onStop()
2019-04-13 12:33:15.294 1923-1923/com.example.lifecircletest D/MainActivity: MainActivityonPause()
2019-04-13 12:33:15.996 1923-1923/com.example.lifecircletest D/MainActivity: MainActivityonStop()
当从桌面或其他Activity回到Activity时会依次执行onRestart()、onStart()、onResume(),此时onCreate()不会再执行。当Activity从不可见变为可见时会执行onRestart()。
2019-04-13 12:35:19.487 1923-1923/com.example.lifecircletest D/MainActivity: MainActivityonRestart()
2019-04-13 12:35:19.489 1923-1923/com.example.lifecircletest D/MainActivity: MainActivityonStart()
2019-04-13 12:35:19.489 1923-1923/com.example.lifecircletest D/MainActivity: MainActivityonResume()
注意:当activity中弹出dialog对话框的时候,activity不会回调onPause。
然而当activity启动dialog风格的activity的时候,此activity会回调onPause函数。
当系统资源不足时,优先级别较低的活动会先被回收
activity优先级
(1)前台可见正在和用户交互的activity优先级最高;
(2)可见但是非前台activity,如activity弹出个窗口。
(3)后台已经暂停的activity优先级最低,当内存不足的时候优先回收这些activity所在的进程,后通过onSaveInstanceState和onRestoreInstanceState来存储和恢复数据。
若想不被重建可以给configChanges属性添加orientation这个值。
重写onSaveInstanceState(Bundle outstate)方法可以在活动被销毁时把需要的数据放入Bundle中,之后用Bundle的getXXX()方法就可以将数据取出。