Activity学习笔记-生命周期
- onCreate()
- onStart()
- onResume()
- onPause()
- onStop()
- onDestory()
- onRestart()
-
当前Activity有部分可见时,执行onPasuse()且会一直保存暂停状态什么都干不了,只有当他完全看不见的时候,才回去执行onStop()方法。当Activity又完全显示了,执行onResume()方法。
-
当执行onPause() 可能意味着用户将要离开这个页面了,可以释放一些资源。停止动画或其他可能消耗 CPU 的进行之中的操作。
提交未保存的更改,但仅当用户离开时希望永久性保存此类更改(比如电子邮件草稿)。释放系统资源,比如广播接收器、传感器手柄(比如 GPS) 或当您的Activity暂停且用户不需要它们时仍然可能影响电池寿命的任何其他资源。在极端情况下,系统会直接终止应用,而不调用onDestory(),so 释放资源的操作,还是在onStop() 中进行,比较靠谱。
在onPause()中执行CPU密集型操作和耗时的操作,会执行完成后,才会启动心动activity,例如写入数据库等,否则影响两个activity切换的效果。这些操作放在onStop()中进行。而放用户又返回当前Activity时,应该在onResume()中初始化在onPause() 中释放调用的所有操作。在onStart() 中初始化在onStop()中回收的所有操作。 -
当前Activity启动下一个Activity时,生命周期的执行情况
onCreate -> onStart ->onResume -> onPause -> (new)onCreate -> (new)onStart -> (new)onResume ->onStop
当新Activity成为用户可见的状态,老的Activity才会执行onStop。
只有当Activity不可见的时候,才会执行onStop. -
onRestart() 使用场景
- 用户打开“最近应用”窗口并从您的应用切换到另一个应用。当前位于前台的您的应用中的Activity将停止。 如果用户从主屏幕启动器图标或“最近应用”窗口返回到您的应用,Activity会重新开始。
- 用户在您的应用中执行开始新Activity的操作。当第二个Activity创建好后,当前Activity便停止。 如果用户之后按了返回按钮,第一个Activity会重新开始。
- 用户在其手机上使用您的应用的同时接听来电。
当Activity执行了onStop() 又没有执行onDestory(),返回当前activity时,会执行onRestart()
-
onStart() onResume() onPause() onStop() 会多次调用,如锁屏到切换回来
onStop() 当新的Activity启动,如果采用的是透明主体,上一个Activity不会执行该方法 -
当在onCreate的方法中直接调用finish,会直接执行onDestory(),不会执行别的方法,其他所有情况下,系统在调用 onPause()和 onStop()之后都会调用用 onDestroy()。
-
当回复当前activity时,其实就是当onCreate的bundle有数据的时候。例如 横屏 变 竖屏 。
- 如果view需要保存状态,必须拥有id。
- 需要保存更多数据,重写onSaveInstanceState(),在onRestoreInstanceState()和onCreate()方法。会取得bundle。