Activity生命周期详解
2015-10-13 09:45
204 查看
首次启动
onCreate –> onStart –> onResume
按下返回按键
onPause –> onStop –> onDestroy
按Home键
onPause –> onSaveInstanceState –> onStop
再次打开
onRestart –> onStart –> onResume
屏幕旋转
如果你不做任何配置启动Activity会执行如下方法:
onCreate –> onStart –> onResume
之后旋转屏幕,则Activity会被销毁并重新创建,之后便会执行如下方法:
onPause –> onSaveInstanceState –> onStop –> onDestroy –> onCreate –> onStart –> onRestoreInstanceState –> onResume
在AndroidManifest配置文件里声明android:configChanges属性
默认屏幕旋转会重新创建,当然可以通过在配置文件里加上如下代码:
android:configChanges="keyboardHidden|orientation|screenSize"(sdk>13时需加上screenSize)
这个时候再旋转屏幕便不会销毁Activity,这时候再旋转屏幕可以看到只会执行onConfigurationChanged方法,有什么在屏幕旋转的逻辑可以重写这个方法:
public void onConfigurationChanged(Configuration newConfig) { if (newConfig.orientation == ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) { // TODO: } super.onConfigurationChanged(newConfig); }
FirstActivity打开SecondActivity
FirstActivity打开SecondActivity,这时候FirstActivity生命周期的方法是这样的: onPause –> onSaveInstanceState –> onStop, 这个时候在SecondActivity按返回键,FirstActivity会有以下集中情况:正常情况下会执行: onRestart -> onStart -> onResume
当系统由于要回收内存而把 activity 销毁时
Activity在onPause或者onStop状态下都有可能遇到由于突发事件系统需要回收内存,之后的onDestroy方法便不会再执行,这时候会执行: onCreate –> onStart –> onRestoreInstanceState –> onResume
相关文章推荐
- 判断是否为同一天
- ECharts开始
- mysql保留字-关键字表
- jsp中${}中变量命名不能大写开头
- MatLab绘图命令
- win10系统隐藏最近使用的文件和常用文件夹方法图解
- Preference的使用 (转自恺风)
- [刷题]Search in a Big Sorted Array
- Android Studio常见问题总结
- vijosP1137 组合数
- python的程序格式要求
- java 队列知识整理
- iOS开发中实现hook消息机制的方法探究
- 快速开发平台网格部件合并单元格。
- onSaveInstanceState & onRestoreInstanceState
- MyEclipse中非动态项目转换为动态项目的方法
- 平均分配
- SVN global ignore pattern
- C#入门(一):IDE
- 判断一个字符是否为汉字