Activity生命周期总结

本文详细解析了Android中Activity的四种状态及生命周期函数,包括标准、SingleTop、SingleTask和SingleInstance四种启动模式的区别,并介绍了如何处理Activity的销毁与重建。
摘要由CSDN通过智能技术生成

Activity的四种状态

  1. 运行状态:Activity位于栈顶,此时处于屏幕最前方
  2. 暂停状态:Activity失去了焦点但仍然处于可见状态,如栈顶的Activity是透明的或者并不铺满整个屏幕
  3. 停止状态:Activity被其他activity完全遮挡,此时activity对用户不可见
  4. 销毁状态:Activity由于人为或系统原因(如低内存等)被销毁

Activity的生命周期函数如下:

 

Activity正常生命周期说明

  1. 完整生命周期:onCreate -> onStart -> onResume -> onPause -> onStop -> onDestroy,称entire lifetime
  2. 可见生命周期:执行onCreate时activity时不可见的,用户看见的是上一个activity,回调onStart方法时activity开始被用户可见,一直到onStop之前,此阶段Activity都是被用户可见,称visible lifetime
  3. 前台生命周期:回调onResume方法时,activity可以和用户交互,一直到回调onPause方法之前,此阶段称foreground lifetime

实际应用场景中,假设A Activity位于栈顶,从A Activity跳转到B Activity的回调顺序:

1、A被实例化,执行的回调有A:onCreate -> A:onStart -> A:onResume。

2、假设B全部遮挡住了A,将执行A:onPause -> B:onCreate -> B:onStart -> B:onResume -> A:onStop。

3、此时如果点击Back键,将依次执行B:onPause -> A:onRestart -> A:onStart -> A:onResume -> B:onStop -> B:onDestroy。

至此,Activity栈中只有A。此时如果按下Back键,系统返回到桌面,并依次执行A:onPause -> A:onStop -> A:onDestroy。此时如果按下Home键(非长按),系统返回到桌面,并依次执行A:onPause -> A:onStop。

由此可见,Back键和Home键主要区别在于是否会执行onDestroy。

 

对Back键、Home键的监听

返回键监听:onBackPressed。 
菜单键监听:onKeyDown或者onKeyUp都可。 
HOME键:并没有直接的方法去监听,可以使用广播监听,在每次点击Home按键时都会发出一个action为Intent.ACTION_CLOSE_SYSTEM_DIALOGS的广播,它是关闭系统Dialog的广播,我们可以通过注册它来监听Home按键消息

横竖屏切换时acitivity生命周期

1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次

2、设置Activity的android:configChanges="orientation"时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次

3、设置Activity的android:configChanges="orientation|keyboardHidden"时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法

 

Activity的四种启动模式

  1. Standard:
  2. SingleTop

应用场景:在通知栏点击收到的通知,然后需要启动一个Activity,这个Activity就可以用singleTop,否则每次点击都会新建一个Activity

  1. SingleTask

应用场景:浏览器主页

  1. SingleInstance

单一实例模式,整个手机操作系统里面只有一个实例存在。不同的应用去打开这个activity 共享公用的同一个activity。他会运行在自己单独,独立的任务栈里面,并且任务栈里面只有他一个实例存在。

应用场景:呼叫来电界面。

 

Activiy的销毁和重建

Activity的销毁与重建发生最多的是横竖屏的切换,当Activity销毁之前,需要保存一些必要的数据,Activity重建的时候,使用这些数据来原样重现之前的Activity

这其中只涉及到两个方法:

 1.onSaveInstanceState()方法      Activity销毁前,保存数据的方法。

2.onRestoreInstanceState()方法 Activity重建时,读取数据的方法

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值