Android学习之Activity篇
Activtity是什么?
活动是最容易吸引用户的地方,它是一种包含用户界面的组件,主要用于和用户进行交互。
Activity的生命周期:
a. activity的四种状态
active: 当前activity处于正在运行状态,正在与用户进行交互,获取到了焦点。
pause:当前activity处于暂停状态,仍然可见,只是失去了焦点,原因是被透明主题的activity或者对话框式的activity获取了焦点。内存中它的成员变量和状态信息都在,所以可以在这进行重要数据的保存,但是不可进行复杂,耗时操作。(还有一种特殊情况是:Dialog启动不会使activity失去焦点,不会进入onPause。)
stopped:与pause状态相似,也处于暂停状态,内存中它的成员变量和状态信息都在,但是完全不可见,处于后台,activity可能会被系统回收, 甚至activity可能不会经历这个状态,直接被销毁,比如用户直接清理内存,强制结束此app。
killed:已经被销毁的activity才处于Killed状态,内存中它的成员变量和状态信息都被回收。
b. activity的生命周期
正常状态下的生命周期:
activity启动→onCreate→onStart→onResume→点击home返回桌面→onPause→onStop→返回 activity→onRestart→onStart→onResume→点击启动另一个activity→onPause→
(另一个activity的生命周期→onCreate→onStart→onResume)→onstop→返回原activity → onRestart→onStart→onResume→点击back退出→onPause→onStop→onDestroy.
生命周期的简化展示图
onCreate():必须要实现的方法,在系统首次创建活动的时候触发,在活动创建时,活动进入Created状态,在这个onCreate方法中,执行基本的程序启动逻辑,初始化控件等等,这个方法在整个生命周期中只发生一次,这个方法接受参数(Bundle)这个参数是存储活动先前保存的状态的对象,如果这个活动是第一次创建,那么bundle值为空.
onStart():当活动进入到Started状态时,系统将调用此方法,这个时候,活动已经是可见了的,正准备进入前台变成交互,这个方法是初始化维护UI的代码的位置,它和Created状态一样,活动不会停留在这个状态。
onResume():当活动进入到Resumed状态时,进入前台,然后系统调用onResume()方法,这是应用程序与用户交互的状态,活动会一直保持这个状态,直到失去焦点。
onPause():当活动失去焦点时进入到pause状态时,调用此方法,它是离开当前活动的第一个指示,它表示活动不再位于前台(就算它仍然可见),在这个方法中要暂停或调整一些在暂停状态不应该继续或者应该继续的操作,比如停止动画,滑动等等操作。在这个方法中,还可以释放一些在暂停期间不需要用到系统资源,但是如果是多窗口模式,那就需要考虑在onStop中释放,而在onPause中做一些调整,更好的支持多窗口。onPause执行非常简短,并不一定要有足够的时间来执行保存操作。出于这个原因,不应该在这保存应用程序或用户数据,进行网络通话,或执行数据库事务;。
onStop():当活动不再对用户可见时,它进入stopped状态,系统将调用该方法。例如,当新启动的活动覆盖整个屏幕时,可能会发生这种情况。在该方法中,应释放或调整对用户不可见时不需要的资源。也可在这方法中保存数据,尽管它可能不太可靠。
onRestart():在要将当前活动重新显示给用户时调用,调用此方法后进入onStart();
onDestroy():在活动被销毁之前被调用。系统调用此方法是因为: 活动正在结束(由于用户想要销毁活动或因活动 的finish被调用),或由于配置更改(例如设备旋转或多窗口模式),系统暂时销毁活动。在该方法中应该释放所有的资源。
异常状态下的生命周期:
onResume→onPause→onStop→onDestroy→onCreate→onStart→onResume
系统永远不会直接杀死活动以释放内存。相反,它会杀死活动运行的过程,不仅会破坏活动,还会破坏流程中运行的所有其他活动。
.......待更新