从离校开始就从事Android开发了,还没有怎么写过博客,记录自己所学的知识点,趁现在有时间,在复习下Android基础知识。
我们都知道Android有四大组件、六大布局、五大存储,而Android四大组件分别为 activity、service、content provider、broadcast receiver。今天主要讲的是Activity
一、Activity的生命周期
从图上不难看出Activity整个生命周期的4种状态、7个重要方法和3个嵌套循环
1、 4种状态
1.1 活动(Active/Running)状态
当Activity运行在屏幕前台(处于当前任务活动栈的最上面),此时它获取了焦点能响应用户的操作,属于运行状态,同一个时刻只会有一个Activity 处于活动(Active)或运行
1.2 暂停(Paused)状态
当Activity失去焦点但仍对用户可见(如在它之上有另一个透明的Activity或Toast、AlertDialog等弹出窗口时)它处于暂停状态。暂停的Activity仍然是存活状态(它保留着所有的状态和成员信息并保持和窗口管理器的连接),但是当系统内存极小时可以被系统杀掉
1.3 停止(Stopped)状态
完全被另一个Activity遮挡时处于停止状态,它仍然保留着所有的状态和成员信息。只是对用户不可见,当其他地方需要内存时它往往被系统杀掉
1.4 非活动(Dead)状态
Activity 尚未被启动、已经被手动终止,或已经被系统回收时处于非活动的状态,要手动终止Activity,可以在程序中调用"finish"方法。如果是(按根据内存不足时的回收规则)被系统回收
2、7个重要方法
2.1 onCreate(Bundle savedInstanceState)
通常用于初始化设置: 1、为Activity设置所要使用的布局文件2、为按钮绑定监听器等静态的设置操作
2.2 onStart()
当Activity可见未获得用户焦点不能交互时系统会调用
2.3 onRestart()
当Activity已经停止然后重新被启动时系统会调用
2.4 onResume()
当Activity可见且获得用户焦点能交互时系统会调用
2.5 onPause()
当系统启动另外一个新的Activity时,在新Activity启动之前被系统调用保存现有的Activity中的持久数据、停止动画等,这个实现方法必须非常快。当系统而不是用户自己出于回收内存时,关闭了activity 之后。用户会期望当他再次回到这个activity 的时候,它仍保持着上次离开时的样子。此时用到了onSaveInstanceState(),方法onSaveInstanceState()用来保存Activity被杀之前的状态,在onPause()之前被触发,当系统为了节省内存销毁了Activity(用户本不想销毁)时就需要重写这个方法了,当此Activity再次被实例化时会通过onCreate(Bundle savedInstanceState)将已经保存的临时状态数据传入因为onSaveInstanceState()方法不总是被调用,触发条件为(按下HOME键,按下电源按键关闭屏幕,横竖屏切换情况下),你应该仅重写onSaveInstanceState()来记录activity的临时状态,而不是持久的数据。应该使用onPause()来存储持久数据。
2.6 onStop()
当Activity被新的Activity完全覆盖不可见时被系统调用
2.7 onDestroy()
当Activity(用户调用finish()或系统由于内存不足)被系统销毁杀掉时系统调用,(整个生命周期只调用1次)用来释放创建的资源,如结束线程等
3、3个嵌套循环
3.1 Activity完整的生命周期:从第一次调用onCreate()开始直到调用onDestroy()结束
3.2 Activity的可视生命周期:onStart()->onRestart()->onStop()
3.3 Activity的前台生命周期:从调用onResume()到相应的调用onPause()。