先来张生命周期的图片
我们一直在用Activity,但是有时的你是否知道 程序的退出或者覆盖 到底运行在生命周期的什么方法里面,如果你不知道那么相对而言以后的工作中你就会发现很多问题。
这里我简单的介绍一下生命周期中的各个方法以及它的四种基本状态让我们更好的理解生命周期:
首先我们介绍一下ocreate():当Activity启动的时候调用该方法。
onstart():在oncreate()被调用后调用,或者执行完onRestart()后Activity重新被用户看见后调用。
onResume():在onResumeInstanceState().onRestart()或onPause被调用后,该方法用来处理和用户的交互。当onStart()被调用后,onRestart()也会自动被调用。较好的习惯是将动画的开始.照相机等独占设备的开启等操作放到该方法中实现。
onPause():当Activity被置于后台且还没被终止掉(kill)时调用,在系统内存不足时会被终止。具体来说就是当Activity被一个透明或者类似于对话框的Activity覆盖时调用,就比如电话打来了。当然调用完后这个Activity任然被窗口管理器维护,所以它仍然可见,只是失去了焦点,故不能在和用户交互。
onStop():当Activity不再被用户可见时调用,也就是一个新的Activity覆盖了这个Activity。在系统需要的内存时会终止这个Activity。
onDestry():当Activity被终止前调用,完成最后的清理。’
onRestart():当Activity调用onStop被停止后又重新被用户可见时调用,比如用户手动单击“返回键回到这个Activity”。
看完了这些方法让我们重新回顾一下上面的生命周期图,收获会更大哦。
下面我们来介绍一下Activity的四种基本状态:
1.运行态(Running)
Activity处于屏幕的最前端,被用户可见并且获得焦点,此时可以与用户交互。调用完onResume()后,Activity进入该状态。一个Activity从被创建到进入运行状态,需要依次调用onCreate()—onStart()—onResume()。
2.暂停态(Pause)
Activity被置于后台仍然被用户可见,此时它失去了焦点,所以不能和用户进行交互,但是其状态信息仍然会被系统保存。调用完onpause()后,Activity进入该状态。如果想重新回到运行态,调用onRestart()。
3.停止态(stopped)
Activity被新的Activity覆盖,此时该Activity不仅失去焦点,也被用户不可见。调用完onStop后,Activity进入该状态。如果想重新回到运行态,需要一次调用onRestart()—onstart() ——onResume()。值得一提的是,与暂停态类似,这里停止态的Activity的信息也会被保留。
4.终止态(Destroy)
当Activity被系统终止,资源被回收。调用完Destry()后,Activity进入该状态。如果想重新回到运行状态,需要重新启动Activity。