《Android编程权威指南》-读书笔记(六) -日志跟踪理解Activity生命周期

《Android编程权威指南》-读书笔记(六)

-日志跟踪理解Activity生命周期

本章目标

  • 简单理解Activity的生命周期
  • 使用LogCat查看输出的日志

 

Activity的生命周期就是在运行、暂停和停止三种可能的状态间进行转换。每次状态发生转换的时候,都会有一个Activity方法将状态改变的消息通知给activity。

在前面的例子中我们熟悉了activity通过覆盖onCreate()方法来准备以下用户界面相面相关的工作:

  • 实例化组件并将组件放置在屏幕上;
  • 引用已实例化的组件;
  • 为组件设置监听器以处理用户交互;
  • 访问外部模型数据;

 

现在开始使用日志来跟踪一下activity的生命周期。Android内部的android.util.log类能够发送日志信息到系统级别的共享日志中心。Log类有好几个日志信息记录方法。书中使用了

Log.d("tag","msg");

方法来处理"debug"级别的日志信息。第一个参数表示日志信息的来源,第二个参数表示日志的具体内容。

从这里开始,我们首先点这个 来运行Android Device Monitor。

Android Device Monitor 这个是Android设备监控

 

在运行这个前是需要优先运行模拟器的。否则会报一个错误。我们先运行一个模拟器,模拟器运行后在运行这个。

 

然后我们新增一个常量,这个常量在QuizActivity.java中。其实这个常量也不是必须定义的,只是这样可以让代码好看一点。

具体的代码会在后面阶段的Git.oschina.net中给出,有哪些修改都可以很清楚的看到。在文章中给出代码是在是看的不是很方便。

首先在setContentView()之前加入这段日志代码,我们运行这个应用。

在Android Device Monitor中的Devices窗口中找到我们的应用com.example.lijing.geoquiz 在这里可以看到它的PID为 2527

在左下角的LogCat视窗中点击+号

Filter Name随便怎么写,by PID填入我们查找到的PID 2527 ,每次运行这个PID都是不一样的,所以每次用这个都要重新设置一次Logcat Message Filter Settings。

我又重新运行了一次这个应用,这次PID编程了2584,我修改了Filter Settings后,可以很容易找到这段信息。

 

接下来我将onStart(),onPause(),onResume(),onStop(),onDestory()都加上日志代码。

在代码的末尾处我敲错了onDestroy(),马上编译器就提示出了错误"Methond 'onDestory()' is never used",因为使用@Override 后,系统中不存在onDestory()的话就会报错。我们在这里全部都是调用的系统已经存在了的方法。这个就是@Override的用处。

 

运行应用后,就会得到下面3个信息。

然后我点击了回到桌面

这个时候显示onPause(),onStop(),说明这个应用首先暂停,然后在停止。

我们进入应用在点击后退键

如果直接后退到桌面的话,首先调用了暂停,然后在调用停止,最后调用销毁。

 

书中对回到桌面单独做出了一次描述。停止的activity能够存在多久,谁也无法保证。如果系统需要回收内存,他将首先销毁哪些停止的activity。

 

现在在模拟器中使用Ctrl+F12

我们会看到这个activity的流程是暂停,停止,销毁,创建,开始,运行。也就是说每次屏幕发生旋转activity都会被销毁并且重新创建。`

 

http://git.oschina.net/canglin/GeoQuiz/commit/46061497aec979bedacf189dbef272a00f7bc39f

 

posted @ 2015-03-22 16:57  苍林  阅读(1157)  评论(0编辑  收藏  举报