为面试做准备之深度解析Activity生命周期(01)

来源:互联网 发布:360软件清理大师 编辑:程序博客网 时间:2024/05/18 12:30

本系列是我面试的时候面试官问我的问题,我在这儿写下来,希望帮助更多的人。


说来惭愧,做了android一年多面试官问我activity生命周期我居然不能详细的说出来,不能说出来就去了解透彻呗。


面试官是这样问我的:你有了解过android activity ?我说了解过,然后他问我activity如果突然异常退出会触发哪一个生命周期,显然我说错来,现在来了解下吧。


先把所以的生命周期给打印出来。



运行下,看下会输出什么


它先触发的是onCreate方法,然后再是onStart和onResume,这样想下,如果我们程序有逻辑错误,进入就报错会触发什么周期呢,在onCreate方法里面出错应该就会只是执行onCreate这个方法吧,试下

OK,它什么都没输出,说明如果再onCreate里面出错就不会再执行其他周期,程序由于异常退出只会执行它所在的生命周期里面。


onResume过后就是Activity Runing 了,这里是官方的说明。


继续测试它当返回过后会触发什么周期呢?



它是先输出onPause然后停了下,输出onStop和onDestroy.


继续测试如果其他activty跳转过来了呢,他会执行什么方法?


我们这是从MainActivity跳转(Intent)到Example1_Activity的,它先在MainActivity里面执行onCreate,onStart,OnResume,这三个周期,一般情况下都是先执行这三个,我们Intent过,所以它会先执行onPause,跳转过Example1_Activity后在执行同样的三个方法,当Example1_Activity中OnResume执行完成之后由于Example1_Activity在MainAcitivty 的上面所以MainActivity就会执行onStop方法。


继续测试如果我们在跳转过后执行finish();方呢,他会有什么变化


看见了么,他会先在MainActivity里面执行OnCreate方法,我们的跳转(Intent)是在onCreate里面执行的,当跳转过后会先去Example1_Activity里面执行onCreate,onStart,OnResume,这三个周期,这时候才算跳转(Intent)完成,完成后才会到MainActivity里面去执行finish();方法,然而执行finish()方法后就会触发onDestroy周期,而这个周期在官网上面写的是最后一个,也就是直接没了(也不知道这样准不准确)。

如果再回到MainActivity里面又会执行什么呢


我们看见Example1_Activity里面会执行onPause(暂停),我们在Example1_Activity里面没有用到finish方法,所以他不会执行onDestroy方法,跳转到MainActivity里面过后,由于我们MainActivity的onCreate方法里也有一个跳转语句,当MainActivity的Oncreate方法的跳转语句执行完成之后会到Example1_Activity里面去执行onCreate,onStart,OnResume,这三个周期,执行完成之后会到Mainactivity里面去执行onDestroy(销毁)方法,下面输出Examp_Activity中的onStop是因为我们在Example1_Activity里面执行跳转的时候会到mainactivity里面执行mainactivity里面的,mainactivity执行完了会回到Example1_Activity里面执行onStop方法



这篇文章就先写到这儿吧,如有任何不懂欢迎到QQ群:48761902 一起交流



转载请注明出处。

0 0