1、Activity的工作原理
在我们的应用程序中,当存在多个Activity切换时,他们如何切换的。在上一个文章中,我们知道了Activity生命周期的几个函数,当Activity中发生跳转时,这些函数的执行过程。
在这篇文章中,想继续深入下,探讨下activity的工作原理。
当我们FirstActivity跳转到SecondActivity中去,然后在SecondActivity中按下back键,又返回到FirstActivity中,这种后进先出的方式,是不是和数据结构中的Stack类似。
看下相应的文档,果不其然,activity内部原理就是Stack的方式。
下面这幅图,就是activity的工作原理:
- 当前程序没启动时,就如图1所示的一样,是一个空的。
- 程序启动之后,默认启动的Activity就会添加进来,假如为FirstActivity,如果在FirstActivity中发生跳转到SecondActiviy,则把SecondActivity入栈。在SecondActivity中又跳转到ThirdActivity中,再把ThirdActivity入栈。
- 如果在ThirdActivity中点击back退出,则弹出ThirdActivity,回到SecondActivity,以此类推。
- 注意,这里可能会存在一个特殊的情况,如果activity不back退出的话,按理说应该会保存在stack中的。但是我们手机的内存是有限的,很可能会因为打开的应用太多,造成系统销毁不活动的activity。举例来说,如上图2,当前的是ThirdActivity,而FirstActivity和SecondActivity是在不活动的状态下,假如在这时内存不够了,就会释放FirstActivity或者SecondActivity的内存,来供程序正常运行。至于怎么释放,还要看操作系统的调度机制。
2、上一篇文章的补充
在上一篇文章中举例说明了,当一个activity在跳转另一个activity中的执行过程。其实在官方的文档中,给出了一个图:
上图详细的说明了activity的生命周期,看图还是比较简单明了的。
当然自己动手重写那几个函数试一试,会加深下印象。
时间: 2024-10-04 11:56:18