• 《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

  • 相关阅读:
    【小5聊】腾讯位置服务之小程序简单使用以及显示附近WC步行路线
    前端面试——JS进阶
    【小5聊】腾讯位置服务之小程序简单使用以及显示附近WC步行路线
    Node学习(三)
    HTML5 知识点总结(六)
    uniapp集成unipush监听推送,处理兼容ios在线无法收到推送通知问题以及安卓推送处理
    记一些CSS属性总结(二)
    Python getattr() 函数
    python中的__init__和__new__的区别
    干货报告:八大科技领域,280 页,InfoQ《2020 中国技术发展白皮书》开放下载...
  • 原文地址:https://www.cnblogs.com/canglin/p/4357585.html
Copyright © 2020-2023  润新知