Activity学习笔记-生命周期

2016-05-24  本文已影响99人  一路摇到顶
屏幕快照 2016-08-07 下午3.41.35.png
  1. 当前Activity有部分可见时,执行onPasuse()且会一直保存暂停状态什么都干不了,只有当他完全看不见的时候,才回去执行onStop()方法。当Activity又完全显示了,执行onResume()方法。

  2. 当执行onPause() 可能意味着用户将要离开这个页面了,可以释放一些资源。停止动画或其他可能消耗 CPU 的进行之中的操作。
    提交未保存的更改,但仅当用户离开时希望永久性保存此类更改(比如电子邮件草稿)。释放系统资源,比如广播接收器、传感器手柄(比如 GPS) 或当您的Activity暂停且用户不需要它们时仍然可能影响电池寿命的任何其他资源。在极端情况下,系统会直接终止应用,而不调用onDestory(),so 释放资源的操作,还是在onStop() 中进行,比较靠谱。
    在onPause()中执行CPU密集型操作和耗时的操作,会执行完成后,才会启动心动activity,例如写入数据库等,否则影响两个activity切换的效果。这些操作放在onStop()中进行。而放用户又返回当前Activity时,应该在onResume()中初始化在onPause() 中释放调用的所有操作。在onStart() 中初始化在onStop()中回收的所有操作。

  3. 当前Activity启动下一个Activity时,生命周期的执行情况
    onCreate -> onStart ->onResume -> onPause -> (new)onCreate -> (new)onStart -> (new)onResume ->onStop
    当新Activity成为用户可见的状态,老的Activity才会执行onStop。
    只有当Activity不可见的时候,才会执行onStop.

  4. onRestart() 使用场景

  1. onStart() onResume() onPause() onStop() 会多次调用,如锁屏到切换回来
    onStop() 当新的Activity启动,如果采用的是透明主体,上一个Activity不会执行该方法

  2. 当在onCreate的方法中直接调用finish,会直接执行onDestory(),不会执行别的方法,其他所有情况下,系统在调用 onPause()和 onStop()之后都会调用用 onDestroy()。

  3. 当回复当前activity时,其实就是当onCreate的bundle有数据的时候。例如 横屏 变 竖屏 。

上一篇下一篇

猜你喜欢

热点阅读