Android菜鸟笔记2-Activity生命周期与Log

一:Acticity

ActivityAndroid程序的4大组件之一。

ActivityAndroid程序的表示层。程序的每一个显示屏幕就是一个Activity

学过WEB开发的同学,可以把Activity理解成网页中的一个JSP文件;或者你可以把它理解成一个Windows的窗口。

ActivityAndroid程序的显示层,每一个显示窗口都是一个Activity;可是Activity本身无法显示在屏幕上,我们可以把它理解成是一个抽象层,一个壳子;就譬如一个JSP页面,它本身并没有显示出来任何东西,负责显示的是他生成的HTML标签。那么Android里谁才是真正显示出来的部分?--是ViewViewGroup,而ViewGroup其实也是View的子类。

有了上述的概念,我们现在可以讲明白一个Activity中的显示元素是如何显示出来的了。首先UI组件是按层次结构来由外到内的方式逐步展示的。要将一个屏幕元素层次树绑定在一个屏幕上显示,Activity会调用它的setContentView()方法并且传入这个层次树的根节点引用。当Activity被激活并且获得焦点时,系统会通知activity并且请求根节点去计算并绘制树,根节点就会请求它的子节点去绘制它们自己。每个树上的ViewGroup节点会负责绘制它的子节点。ViewGroup会计算它的有效空间,布局所有的子显示对象,并最终调用所有的子显示对象的Draw()方法来绘制显示对象。各个子显示对象可以向父对象请求它们在布局中的大小和位置,但最终决定各个子显示对象的大小和位置的是父对象。

Android程序借助ViewViewGroup对象来构建用户界面。Android提供了比HTML多得多的,现成的用户界面组件,譬如现在网站上常见的五角星评分效果组件RatingBar.


:Activity生命周期

手机最重要也是最基础的功能是打电话,也就意味着电话来的时候可能随时要把现在的程序暂停,如果电量不足的时候也可能随时要把现有程序关闭;因此Android程序和电脑上的程序有所不同,具体到ActivityActivity的生命周期不是自身控制的,而是由Android系统控制的。

androidActivity有四种基本状态:

技术分享

1Running

位于屏幕最前端时,此时处于可见状态,和用户可交互的状态。

2Paused

Acitivy被另一个透明的或者非全屏的Activity覆盖时的状态叫Paused状态,虽然可见但不可交互。

3Stop

Activity被另外一个Activity覆盖、界面不可见时处于Stop状态。

4Killed

Activity被系统杀死或者跟本没启动时就是Killed状态。


三:日志

android提供了自己的log输出api-->位于android.util.Log这个类中.

这个类比较常用的打印日志的方法有5,5个方法都会把日志打印到LogCat:

Log.v(tag,message); //verbose模式,打印最详细的日志

Log.d(tag,message); //debug级别的日志

Log.i(tag,message); //info级别的日志

Log.w(tag,message); //warn级别的日志

Log.e(tag,message); //error级别的日志

其中tagmessage分别是两个String.

ag用来标记log消息的源头的.message则是这条log的内容.

我把Activity的各个方法改一下,给每个方法中加上了Log.d来记录日志输出,结果如下图.

技术分享


Run工程,查看LogCat输出

技术分享

旋转app的屏幕,查看日志

技术分享

我们可以看到屏幕翻转时,Android系统把ActivityLife这个Activity先杀死(具体顺序是先暂停、后关闭再销毁),然后再启动(具体顺序是先创建,后启动再恢复)。通过这个例子我们也清楚的看到了,是Android系统而不是程序员在控制Activity的生命周期。



郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。