您的位置:首页 > 移动开发 > Android开发

诠释Android中Activity的生命周期

2017-03-06 11:53 183 查看

诠释Android中Activity生命周期

生命周期

     Activity:本质上是一个与用户进行交互页面,但其存在不同的生命周期,为什么会存在不同的生命周期呢,每一个生命周期对应着又是什么含义呢?接下来,我将为你奉上Activity的生命周期。
Activity存在于Android.app这个包下面,但其是继承于Context中的子类准确来说Activity与Context的关系如下:



       为什么会存在这样的关系呢,在Android中Context更多的作为上下文对象进行引用,例如Toast消息提示以及一些常用方法使用时都需要Context这个方法而Activity通过这样的继承方式不单是只享有Context这个对象更多的是还能通过Context拓展子类享有更多的一些属性并对Activity一些开发需求中可以直接通过this来直接调用。
        Activity是由一个Activity栈进行管理,每一个当前运行的Activity都是出于Activity栈顶,而其他Activity则依照启动顺序倒序存在于Activity栈中,但Activity调用了finish()则会直接从栈中被移除并被内存回收销毁,注意在实际开发中不应该存在过多的Activity保留在Activity栈中,要及时调用finish()方法让Activity栈更为合理。当用户按下回退按键时,如果当前没有其它操作可进行则当前Activity会直接从栈中弹出并显示栈中的下一个Activity假如不存在下一个Activity则会直接回到手机主界面。
如图所示一下是Activity的生命周期:



OnCreate:

       按照Activity传统的启动模式下:Activity会先进行OnCreate()方法,什么意思呢,在这个方法中Activity这个对象会先进行创建,如果在开发中你的Activity是正常启动模式,你可以在OnCreate()方法中对一些对象UI进行初始化但是假如使用了一些三方UI框架绑定UI则建议在OnStart()方法中绑定,在实际开发中有时Activity不会走正常的启动模式而走其他启动模式时则代表有可能不走OnCreate()方法,这时数据的初始化可能就会出现问题。

OnStart

       按照传统的启动模式下:这个方法都会紧接着OnCreate()方法或者OnRestart()后执行,只有执行了这个方法用户才可视Activity这个页面;在这个方法中通常代表着Activity在启动并与可视的一个生命周期,然而当用户点击屏幕与其交互,此刻会紧接着调用下一个生命周期OnResume()。

这一个生命周期伴随着OnStart这个生命周期之后,其含义代表着当用户点击页面与其进行交互时候常常会触发这个生命周期,开发者可以通过这个生命周期的特性针对用户刚刚开始交互的时候触发一些特性让用户加深对App的印象,最好作用于App首次安装引导使用的时候,或者一些其他需要一些别于其他App的一些心意或者某一些开发需求中这此方法调用一些功能性需求。

OnResume

        这一个生命周期代表着当用户使用App时候,某一刻,App不得不暂时离开使用但不代表这一个Activity页面是不可视化的,例如突然收到短信的消息提示或者其他App的一些消息推送等,所以Activity会直接调用这个方法进行短暂的暂停,如果经历短暂的暂停用户选择直接回到App上使用的情况下则会直接调用OnResume这个生命周期,但是用户不需要回到这个App上使用的时候则会直接调用OnStop这个生命周期。

OnStop

       这一个生命周期总是伴随着OnPasue这个生命周期之后使用,其意味着:Activity移动到后台也就是说App此刻可能处于后台中,因为Activity跳转到另外一个Activity中时会正常的走一次Activity应允许生命周期的方法,此刻可以针对是否跳转页面还是处于后台的数据进行一些操作避免,在Activity回调OnRestart这个生命周期后有些数据应该发生改变时却没有及时的发生改变。

OnRestart

       这一个生命周期总是伴随着OnStop这个生命周期后使用,其含义是预重启Activity,也就是预加载Activity,这时就可以针对上一次操作以及一些已发送数据源或者对象进行重新加载或者动态性的修改数据避免数据的不一性,也就是预处理。

OnDestroy

       这一生命周期代表着Activity已经走完了应有的生命周期处于死亡周期,也就是销毁,但是针对这一生命周期,Activity有可能存在于Activity栈中,其原因是当Activity进行跳转或者其他的一些的操作的时候并没有调用finsh这个方法从栈中移除;也有可能当整个App长期处于暂停模式中,内存管理对于一些没有长期活跃也就是长期处于后台中的App以及一些资源在内存吃紧的时候会自动帮其调用这个生命周期释放支援保证内存有足够的资源让现有的活动的App可以使用,而如果被内存自动调用其方法的时候从后台启动App的时候并不会在重现上一次操作的Activity页面除非该页面是默认的启动页面或者主页面,而此刻的App会重新按照App的Activity默认启动主页先开始启动也就是重启动App。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android