一.Activity的生命周期
Activity三个稳定状态:
Resumed:这个状态在onResumed()方法执行完毕,也就是Activity的running状态,用户可以与Activity进行交互
Paused:在这个状态,Activiy处于半透明的,其他的activity来到栈顶,如果其他Activity是透明的,或者不完全遮挡,这时就会只执行onPause()方法,进入该状态。Activity在该状态,用户不能与之交互。
Stopped:当Activiy被其他Acitivy完全遮挡,处于后台时,会进入该状态,在进入这个状态前,需要保存Activity的数据(避免因停留过久, 或内存不足,而被系统杀死导致丢失数据)。在该状态,acitivy不能执行任何代码。
onCreate()方法:Activity生命周期的第一个方法,用来建立一个Activiy所需要的基础操作,比如加载界面布局,声明UI元素,定制UI元素,配置UI数据。
onStart()方法:表示Activity正在被启动,这时Acitivy已经可见了,但还没处在前台,用来初始化Activity的数据。
onResume()方法:此时Activity已经可见,并且出现在前台并开始活动。主要用来做准备Activity资源的操作。
onPause()方法:表示Activity正在暂停,正常情况下,接下来onStop()要被调用。特殊情况,如果新的Activity是透明的,没有完全遮挡住旧Activity,则旧Activity只会执行onPause()方法,在该方法中,保存数据,停止动画,释放系统资源,做一些轻量级的工作。
onStop()方法:在新的的Activity启动之后,旧的Activity会停止再执行onStop()方法,用来保存耗时的数据操作(写数据到DB等),释放资源。
onDestroy()方法:表示Activity即将被销毁,Activity生命周期最后一个回调方法,用来做一些回收工作,防止内存溢出。当Activity在后台内存不够被系统杀死时,该方法不会回调。
二.对生命方法的理解:
Activity的生命周期中方法,创建成功,到销毁,方法成对出现的,也要成对使用。
onCreate()对应onDestroy()
onStrart()对应onStop()
onResume()对应onPause()
成对出现:
onCreate()和onDestroy()方法期间Activity的状态是一致的,是看不见界面的,处于黑屏状态,因此不能执行太过耗时的操作。
onStart()和onStop()方法期间Activity的状态是一致的,界面处于半透明的状态。
onResume()和onPause()方法期间Activity的状态一致,界面是可见的。
成对使用:
1.onPause()和onResume()
onPause()方法:
①停止会导致CPU的浪费。停止动画等。
②提交没有保存的改变,一般用来保存临时的或者不太耗时的操作。
③释放系统资源,如广播、sensors、或者是其他耗电的资源。
onResume()方法:
①初始化资源(开启动画等)
②注册广播、sensors等系统资源
2.onStart()和onStop()
onStop()方法:
①在onStop()方法中释放资源,从而避免内存泄露。清除所有Activity资源的操作。
②执行稍微耗时的保存数据的操作,如保存数据到数据库。
onStart()方法:
创建在onStop()方法中释放的资源。
三.方法的区别