Hi,众猿们,前几天给大家讲了个比较深的问题,从今天起本猿猿决定从基础知识开始唠起,四大组件、UI基础、多媒体、数据储存等,这些唠完大概就到2月20日左右了,本猿猿慢慢更,自己也复习下基础,大家也别催,如果众猿猿闲本猿猿更得慢的话,可以自己先找本书看看(后台回复资料即可获取相关学习资料)。
Activity,安卓开发文档上的解释是:An activity is a single, focused thing that the user can do. Almost all activities interact with the user, so the Activity class takes care of creating a window for you in which you can place your UI with setContentView(View). 也就是说,活动是一个负责与用户进行互交的对象,它负责创建窗口,并维护开发者放置在窗口上的控件。我们调用活动的setContentView方法可以为活动设置布局文件,通过findViewById可以找到布局文件中的相关控件并未它们设置监听器等。可以说,在以前,APP的每一个界面都是由其对应的Activity来进行管理的。
既然Acitivity是个挺大腕儿,那我们就有必要了解一下它的其它性质,首先是活动的管理方式,Android是以返回栈(Back Stack)的形式保存一个APP中的所有活动的,而一个返回栈中所有的活动的集合被称为任务(Tasks )。栈是一种先进后出、只能在一段进行操作的数据结构(这个应该会没人不知道吧),每当一个活动被创建时,Android会把它放在栈顶,且安卓系统总是先从栈顶销毁活动,也总是将栈顶Activity对应的界面展现在手机屏幕上。
好了,了解了活动的管理方式,接下就可以说说活动的生命周期了,与活动的生命周期相关的函数一共有七个,它们分别是:onCreate、 onStart、onResume、onPause、onStop、onRestart、onDestory。
这些方法在什么时候调用,一看方法名就知道了。另外,活动还有四种生命状态(相对于活动的界面而言):
- 运行状态:活动可见且可以响应用户操作(如可以响应按钮点击事件)。
- 暂停状态:活动可见但被其它组件(如对话框)等遮挡,不能响应用户操作。
- 停止状态:活动不可见但还存在于返回栈中。
- 销毁状态:活动已经从返回栈中被销毁,调用finish方法即可销毁活动。
活动的七个生命周期方法中,出onRestart方法外,其它的两两成对(本猿猿并没有要虐单身猿的想法),共同组成了活动的三种生命周期:
- 完成生命期:活动在onCreate和onDestory之间经历的生命状态,我们一般需要在onCreate方法中为活动设置布局文件(调用setContentView方法)并初始化控件。
- 可见生命期:活动在onStart和onStop之间经历的生命状态,此时活动虽然可见,但不一定可以响应用户操作。
- 前台生命期:活动对用户可见且可以响应用户操作。
好了,接下来方一张经典的图片,来自安卓开发文档,看到这张图众猿们就应该很了解活动的生命周期了吧:
了解了活动的生命周期,接下来在说说活动的启动模式吧,一共有四种:
1.标准模式(standard):活动默认的启动模式,每次启动活动时,不管返回栈中是否有该活动的实例,都会创建一个新的实例并压如返回栈中。但有时这种模式并不合理,因为如果该活动的实例已经在栈顶了,再次启动时为什么还有创建新的呢?
2.栈顶模式(singleTop):启动活动时,如果该活动已经有实例位于返回栈的栈顶,则直接启动该实例而不再创建新的实例。
3.单任务模式(singleTask):启动活动时,先检查返回栈中是否存在该活动的实例,若不存在则创建实例并压入栈顶;若存在则将返回栈中位于该实例上面的实例全部弹出(即销毁),使该实例位于栈顶,然后在启动该实例。
4.单实例模式(singleInstance):Android会为采用该模式的所有活动创建一个新的任务栈,这种模式主要用于哪些被其它应用共享的APP。如用qq登录其它界面时,总会弹出一个相同的界面,该界面对应的活动也许就是单实例模式的(本猿猿又看不到qq的源码,也不太确定)。
好了,今天就讲到这个了,全篇基本都是理论性的东西,这东西最烦人了,不知道不行,但看起来又总让人觉得似懂非懂,很是烦人。不过,本猿猿保证,下一篇会唠唠活动的使用,保证不会像这样全篇理论,让人烦躁的。
微信搜索“猿聚于此”可观看其它文章。
猿猿的CSDN博客已经开通了,在CSDN上搜索“任我行吧”就可以关注本猿猿了,微信上的文章都会在上面同步更新的,大家快去关注吧。
最后依旧是每日一乐:程序猿的读书历程:x语言入门—>x语言应用实践—>x语言高阶编程—>x语言的科学与艺术—>编程之美—>编程之道—>编程之禅—>颈椎病康复指南。