Activity生命周期
来源:互联网 发布:老鼠仓软件 编辑:程序博客网 时间:2024/06/05 02:23
Activity作为四大核心组件之一,主要用于处理用户操作,由此可见Activity会创建一个可视化窗口,通过setContentView(View)把指定的UI资源放到由它创建窗口上
Android系统中用栈来管理Activity,当新启一个Activity时,它将被放到栈顶,之前的Activity保留在栈中,不在出现在前台,栈顶的Activity属于活动或运行状态(active or running)
先看看下面的几个方法的调用情况:
@Override public voidonCreate
(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // onCreate:创建时调用,或者应用在暂停、停止状态下被杀死重新打开也会调用 } @Override protected voidonStart()
{ super.onStart(); // onStart:onCreate之后,在停止状态下恢复(onRestart)时调用 } @Override protected voidonResume()
{ super.onResume(); // onResume:onStart之后,在暂停状态下恢复时调用 } @Override protected voidonPause()
{ super.onPause(); // onPause:进入暂停状态,停止或销毁时调用 } @Override protected voidonStop()
{ super.onStop(); // onStop:进入停止状态,销毁时调用 } @Override protected voidonDestroy()
{ super.onDestroy(); // onDestroy:销毁时调用 }@Override protected voidonRestart
() { super.onRestart(); // onRestart:从停止状态恢复时调用,指向onStart }
以上是Activity生命周期调用的流程,具体情况如下图
下面我们根据上图来分析:
首先看看整个生命周期,onCreate(Bundle)--->onDestroy(),Activity在onCreate创建线程,在onDestroy停止线程
确定Activity会被Kill的情况:onPause、onStop、onDestroy如上图
1.onPause():这里引入一个焦点概念,Activity生命周里,在onResume获取窗口的焦点,在onPause失去窗口焦点,但此时Activity还属于可见状态(例如:弹窗),在设备内存极低的情况被杀死
2.onStop():Activity完全被覆盖(例如:点击home键),此时Activity属于不可见状态,在设备内存需要被其它地方使用时,该Activity容易被杀死
3.onDestroy():代表Activity生命的完结,主要用于释放资源,如果需要重现此Activity,必须重新走Activity生命周期
其次是可见与不可见的生命周期,onStart()--->onStop(),在此阶段,Activity不停在可见与不可见进行切换(onStart()和onStop()多次调用),同时保留显示UI的资源和数据,通常情况下,可以在onStart里注册一个IntentReceiver来监听数据的变动,在onStop里面注销
最后是前台与非前台的生命周期,onResume()--->onPause(),在此阶段,主要用于和用户进行交互
- Activity 生命周期
- Activity生命周期
- Activity 生命周期
- Activity 生命周期
- Activity生命周期
- Activity生命周期
- Activity生命周期
- Activity生命周期
- Activity生命周期
- activity生命周期
- Activity 生命周期
- Activity生命周期
- Activity 生命周期
- activity生命周期
- Activity 生命周期
- Activity生命周期
- Activity生命周期
- Activity生命周期
- Android动画效果之渐入渐出
- Xcode的Architectures、Valid Architectures和Build Active Architecture Only属性
- UVALive - 2728 A Spy in the Metro DP
- 《算法帝国》——华尔街,第一张多米诺骨牌
- WebView总结
- Activity生命周期
- 3.9.1指数计数法
- HDU 1009:FatMouse' Trade(简单贪心)
- BUPT 2014新生暑假个人排位赛01
- 0x7743fcec 处未处理的异常: 0xC015000F: 正被停用的激活上下文不是最近激活的
- JUnit搭建测试工程及使用
- 仿电池电量充电、上下左右剪切动画
- MySQL数据库常用命令
- 将App安装成系统软件