一、Activity
一个Activity简单的来说就是我们看到的一个页面,它上面可以显示一些控件也可以监听并处理用户的事件做出响应。
二、生命周期
Android系统是一个多任务(Multi-Task)的操作系统,可以在用手机听音乐的同时,也执行其他多个程序。每多执行一个应用程序,就会多耗费一些系统内存,当同时执行的程序过多,或是关闭的程序没有正确释放掉内存,系统就会觉得越来越慢,甚至不稳定。
为了解决这个问题, Android 引入了一个新的机制-- 生命周期(Life Cycle)。
下面这张图可以帮助我们理解生命周期
三、7个方法
onCreate():当Activity第一次被实例化的时候系统会调用,整个生命周期只调用1次这个方法。通常用于初始化设置,为Activity设置所要使用的布局文件,为按钮绑定监听器等静态的设置操作。
onStart():当Activity可见未获得用户焦点不能交互时系统会调用。
onRestart():当Activity已经停止然后重新被启动时系统会调用。
onResume():当Activity可见且获得用户焦点能交互时系统会调用。
onPause():用来存储持久数据。到这一步是可见但不可交互的,系统会停止动画等消耗CPU的事情。从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的程序的优先级降低,有可能被系统收回。
onStop():当Activity被新的Activity完全覆盖不可见时被系统调用。
onDestroy():当Activity(用户调用finish()或系统由于内存不足)被系统销毁杀掉时系统调用,(整个生命周期只调用1次)用来释放onCreate()方法中创建的资源,如结束线程等。
了解以上方法在什么情况下执行,我们就可以根据自己的需要在不同的方法中写入我们需要的操作。
四、实例
我们写一个简单的程序进行一些操作可以证明:(在各个方法中加入对应的输出语句即可)
当Activity1启动时: onCreate(1) onStart(1) onResume(1)
当Activity2启动时: onPause(1) onCreate(2) onStart(2) onResume(2) onStop(1)
当返回到Activity1时:onPause(2) onRestart(1) onStart(1) onResume(1) onStop(2) onDestroy(2)
注意:
1.当我们直接按home键返回主菜单时,我们发现我们的Activity实际上并没有被销毁,只是执行了onStop方法
2.当我们从当前的Activity按退出键一步一步返回主菜单时,Activity会被销毁
3.当我们从当前全屏Activity打开一个非全屏的Activity时原来的Activity只是执行了onPause方法并不会执行onStop方法,而当我们再回到原来Activity时,非全屏Activity会先执行onPause,而原来的全屏Activity执行onRestart onResume,然后非全屏Activity执行 onStop onDestroy