Activity的生命周期

正常情况下activity的生命周期

  • onCreate: Activity正在被创建,通常在里面做一些初始化的工作。
  • onReStart: Activity正在重新启动,当当前Activity从不可见变为可见状态的时候,onRestart会被调用,比如从当前Activity跳转到一个新的Activity,或者是按下home键回到桌面,再回到当前Activity时onReStart会被调用。(如果跳转到一个透明主题的Activity再回来不会调用onRestart方法,会直接调用onResume方法,因为当前Activity没有stop)
  • onStart:Activity正在被启动,此时Activity已经可见了,但是还没有出现在前台。
  • onResume:Activity已经可见了,并且已经出现在前台并开始活动。(onStart和onResume对比:两者都表示Activity已经可见了,但是onStart的时候Activity还在后台只有调用了onResume只后Activity才会出现在前台)
  • onPause:Activity暂停,可以在里面做一些数据储存、停止动画的操作,但是不能执行耗时操作,因为只有onPause执行完新的Activity才会被创建。
  • onStop:Activity停止,可以做一些重量级的回收工作,同样不能太耗时。
  • onDestroy:Activity被销毁,这是Activity中的最后一个回调,可以在里面做一些回收工作和最终的资源释放。

一个Activity第一次启动的生命周期:onCreate->onStart->onResume。

这里写图片描述

当用户打开新的Activity或者切换到桌面的时候:onPause->onStop。

这里写图片描述

当用户打开一个透明主题的Acyivity的时候:只调用onPause不会调用onStop。

这里写图片描述

当用户再次回到原Activity的时候:onRestart->onStart->onResume.

这里写图片描述

当用户按back键回退的时候:onPause->onStop->onDestroy.

这里写图片描述

在整个生命周期中onCreate和onDestroy是一对,分别代表Activity的创建和销毁,并且只可能被调用一次。onStart和onStop是一对,分别代表Activity的可见和不可见,随着用户的操作可能被多次调用。onResume和onPause是一对,分别代表Activity是否在前台,随着用户的操作同样可能被多次调用。

当启动一个新的Activity的时候就的Activity的onPause会先执行,然后才会启动新的Activity。

这里写图片描述

异常情况下activity的生命周期

  • 当资源相关的系统配置发生改变时导致Activity被销毁并重新创建

  • 当资源内存不足时可导致低优先级的Activity被销毁


当Activity被异常销毁的时候,其onPause、onStop、onDestroy均会被调用,同时系统会调用Activity的onSaveInstanceState来保存当前的Activity状态。这个方法的调用时在onStop之前,当Activity被重新创建时,系统会调用onRestoreInstanceState,把Activity销毁时onSaveInstanceState方法保存的Bundle对象作为参数传递给onRestoreInstanceState和onCreate方法。onRestoreInstanceState的调用时在onStart之后。

onSaveInstanceState只会在Activity即将被销毁并且有机会重新显示的情况下才会去调用它,当Activity正常销毁的时候,系统不会调用onSaveInstanceState。

另外当通知栏被滑下来的时候,Activity不会有周期的变化,因为通知栏是系统级的remoteView不是Activity所以不会引起Activity生命周期的变化。

附上Demo地址https://github.com/boomshakalala/ActivityLifeCycleDemo.git

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值