2000字范文,分享全网优秀范文,学习好帮手!
2000字范文 > Android Activity基本生命周期看过这篇文章就知道了!

Android Activity基本生命周期看过这篇文章就知道了!

时间:2023-01-14 11:04:09

相关推荐

Android Activity基本生命周期看过这篇文章就知道了!

在日常Android开发中,对于Activity生命周期掌握必不可少,相信很多初学者都在这方面犯过这样那样的错误,本文将全面的剖析Activity的生命周期,废话不多说,直接进入正题。

1. Activiy的运行态

在开始讲Activity生命周期之前,我们需要先了解Activity的四种运行状态,分别是运行态、暂停态、停止态以及销毁态,Activity生命周期就是这四种状态的切换的整个过程:

运行态是指Activity正在前台运行,处于任务栈顶,对用户来说是可见,对于运行态的Activity,系统绝对不会回收该Activity。暂停态是指当前Activity被一个非全屏的Activity覆盖,比如弹出一个dialog,此时当前Activity失去焦点并且用户可见,但是无法响应用户进行交互,当系统内存极度缺乏时会回收暂停态的Activity。停止态是指当前Activity被一个全屏的Activity覆盖,此时Activity对于用户来说不可见,对于处于停止态的Activity在任意时刻都有可能被系统回收。销毁态是指当前Activity被移除了任务栈并被销毁,等待被系统回收掉。2.Activity的基本生命周期

千言万语不如直接上图,各位看官请看下图:

相信大家对这张图都很熟悉,这个就是google官方给出的Activity生命周期图,其中主要涵盖onCreate、onStart、onResume、onPause、onStop、onDestory以及onRestart方法,每个方法解释如下:

onCreate:该方法时整个Activity生命周期的第一个方法,它表示Activity正在被创建,日常开发过程中,相信大家接触最多的就是这个方法,在这个方法中我们常常做一些初始化的工作(如加载布局资源、初始化数据等操作),此时Activity不可见。onStart:顾名思义,该方法代表Activity正在被启动,此时Activity已经可见,但是此时Activity还未到前台,因此用户还无法看到,无法响应用户的交互动作。onResume:该方法表示Activity已经经过前面步骤创建完成,此时Activity已经可见并且已经来前台,用户能够看到界面并且能够进行交互操作并获得响应。onPause:onPause方法表示Activity正在暂停,正常情况下,onStop紧接着就会被调用。在特殊情况下,如果这个时候用户快速地再回到当前的Activity,那么onResume会被调用(希望你手速够快,很难出现)。一般来说,在这个生命周期状态下,可以做一些存储数据、停止动画的工作,但是该方法不能执行耗时操作,这是由于启动新的Activity而唤醒的该状态,那会影响到新Activity的启动,原因是新的Activity的onResume方法是在老Activity的onPause执行完后才执行的(具体原因可以看下系统启动Activity的机制)。onStop:表示Activity即将停止,可以做一些稍微重量级的资源回收工作等,同样也不能太耗时。onDestroy:表示Activity即将被销毁,这是Activity生命周期的最后一个回调,我们可以做一些回收工作和最终的资源释放(如Service、BroadReceiver、Map等)。onRestart:表示Activity正在重新启动,一般情况下,在当前Activity从不可见重新变为可见的状态时onRestart就会被调用。这种情形一般是由于用户的行为所导致的,比如用户按下Home键切换到桌面或者打开了一个新的Activity(这时当前Activity会暂停,也就是onPause和onStop被执行),接着用户有回到了这个Activity,就会出现这种情况。介绍完了Activiy正常生命周期涉及到的方法,接下来咱们通过具体的例子可以看看是否如我们前面描述的那样,各位看官请看:

启动一个Activity A,具体日志如下:

接下来在A中启动Activity B,具体日志如下:

点击back键回到Activity A,具体日志如下:

结束应用,具体日志如下:

从上面日志我们可以看出,Activity的生命周期确如描述那样。好了,本次的Android基础知识Activity基础生命周期分享到这里,请大家继续关注下期Activity的异常生命周期!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。