Android的吃鸡之旅——四大组件之Activity

2018-05-17  本文已影响8人  one1go

写在前面

作为一个刚入门的Android开发,每当我自以为学有所成的时候,总会在n种地方看到n种打脸...啥也不说了,开始学习。
学习路线参考 https://github.com/francistao/LearningNotes

Activity有什么

生命周期

常规生命周期
onCreate -->onStart --> onResume --> onPause --> onStop-->onDestory

退到后台
onPause-->onStop

返回前台
onRestart-->onStart->onResume

锁屏
onPause-->onStop

解锁
onStart-->onResume

Activity之上有弹窗,未完全覆盖
onPause-->onStop

横竖屏切换

  1. 在onCreate中通过 this.getResources().getConfiguration().orientation
  2. 重写onConfigurationChanged方法
  3. 在onCreate()方法中通过 this.getResources().getConfiguration().orientation 判断加载不同的布局

什么时候调用OnRestart()
一般情况下,当前Activity从不可见状态变为可见状态时,onRestart()方法就会被调用。如果用户点击Home键返回了前台或者从一个Activity跳转到另一个Activity,如果用户再次返回这个Activity,这个方法就会被执行

异常情况下生命周期分析

  1. 资源相关的系统配置发生改变导致Activity被杀死并重新创建,比如横竖屏切换
    这时候Activity被销毁,onPause() onStop() onDestory() 肯定会被调用,因为Activity是在异常情况下终止的,所以系统会调用onSaveInstanceState()方法来保存当前Activity的状态,它在onStop()之前,但是与onPause()并没有先后关系,而且这个方法只出现在Activity被异常销毁的时候,并且Activity重新创建时系统会调用onRestoreInstanceState(),这时候通过onSaveInstanceState()存下的Bundle对象会传过来,我们可以通过onRestoreInstanceState()和onCreate()方法来恢复数据,onRestoreInstanceState()调用时机在onStart()之后。这里需要注意的是,系统会自动帮我们恢复Activity的视图结构。界面重启后恢复,比如文本框中输入的数据,列表的滑动位置等。如果想确定特定view恢复了什么数据,可以去看view源码中的onSaveInstanceState()和onRestoreInstanceState()方法,比如通过TextView源码可以发现他保存了自己的文本选中状态和文本内容。

待续

发现总结的太慢,先了解了再总结

参考

https://github.com/francistao/LearningNotes
https://blog.csdn.net/ouyang_peng/article/details/9282965
https://www.jianshu.com/p/50a6376fa87e
《Android开发艺术探索》

上一篇下一篇

猜你喜欢

热点阅读