Android 基础课堂
在上周的基础课堂中,我们说过了,本系列的基础课堂将会结合一个应用的开发过程慢慢带大家慢慢深入理解Android开发的过程,故该基础课堂和正常的Android入门教程不太一样,不会像正常的Android入门教程那样,巴拉巴拉的从四大组件、各种控件等等开始讲,而是会遵从用到什么讲什么的原则,然后慢慢 涵盖各组件、各控件,在实际场景中学习组件、控件的应用,我觉得对于入门来说,是比较好接受的,当然入门之后,我们可以反过来把Android的整体架构再理一遍过去,这时候来理架构比起一入门就理架构,我觉得会比较好懂点。
至于我们要开发一个什么样的应用呢,这个嘛,慢慢的就知道了,哈哈随着基础课堂的延续,该应用会慢慢的展现在我们眼前,那么下面就让我们进入到今天的基础课堂吧。
第二课、从创建一个Android工程开始
- 在上面创建工程的时候,可以选择是否创建第一个Activity ,以及创建什么样式的Activity ,那么本着用到什么讲解什么的原则,我们现在就来讲讲Activity
- Activity 是四大组件之一,并且是我们最经常用到的组件,Activity 是用户接口程序,原则上它会提供给用户一个交互式的接口功能。Activity 本身是没有界面的,Activity 类创建了一个窗口,通过setContentView(View)接口把.xml界面放到Activity 创建的窗口上。当Activity 指向全屏窗口时,也可以用其他方式实现:作为漂浮窗口(通过windowIsFloating的主题集合),或者嵌入到其他的Activity (使用ActivityGroup)。activity是单独的,用于处理用户操作。几乎所有的Activity 都要和用户打交道,说简单点就是,我们在手机上看到的页面,基本上都是需要一个Activity 承载的。
- 下面我们来看看Activity从创建到被销毁之间,都调用了哪些函数做了哪些事,即Activity的生命周期

- 这是Activity的生命周期图,我们可以看到,从Activity创建开始到被销毁,会依次调用onCreate -> onStart -> onResume -> onPause -> onStop -> onDestroy,那么具体在什么时候调用这些方法呢?
- 在一个Activity正常启动过程中,这些方法调用的顺序是onCreate -> onStart -> onResume;在Activity被kill掉的时候方法顺序是onPause -> onStop -> onDestroy,这是Activity的一个完整的生命周期。但是从创建到被销毁,之间可能会经过各种情况,例如对于中断处理,比如来电话了,这时候会调用的是onPause -> onStop,接完电话重新回答页面时onStart -> onResume;如果当前应用程序的是一个Theme为Translucent(半透明) 或者Dialog 的Activity那么中断就是onPause ,恢复的时候onResume;关于Activity在各种特殊情况下调用哪些生命周期函数,可以通过重载这些函数打印log,然后针对特殊情况进行测试,这样我们就能清楚的知道Activity在各种情况下分别调用了什么方法了。
- 在Activity的生命周期的各个函数中,我们应该做些什么呢?
onCreate:在这里创建界面,做一些数据的初始化工作;
onStart: 到这一步变成“用户可见不可交互”的状态;
onResume:变成和用户可交互的,(系统通过栈的方式管理Activity,即当前Activity在栈的最上端,运行完弹出栈,则回到上一个Activity);
onPause:到这一步Activity是可见但不可交互的,系统会停止动画等消耗CPU的事情。从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候你的程序的优先级降低,有可能被系统收回。在这里保存的数据,应该在onResume里读出来。
onStop:变得不可见 ,被下一个Activity覆盖了
onDestroy:这是Activity被kill前最后一个被调用方法了,可能是其他类调用finish方法或者是系统为了节省空间将它暂时性的干掉,可以用isFinishing()来判断。
- 关于Activity的跳转以及通信之类的内容,我们还是本着用到的时候再讲解的原则,在真正用到的地方再去讲解它的用法及功能,这将有利于我们在实际应用中理解它,而不至于我们现在讲了,到真正使用的时候,如果不重新讲会遗忘它的用法与功能,对理解不利。
- 本次的基础课堂,我们把Android工程搭建起来了,也讲了Android中的四大组件之一Activity的一些内容,下次基础课堂,我们将会进入我们的应用的第一个页面的相关内容的搭建,下节课见啦~
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。