美文网首页
Android编程权威指南读书笔记 - 第三章

Android编程权威指南读书笔记 - 第三章

作者: 武当霍元甲 | 来源:发表于2019-11-21 17:46 被阅读0次

    第三章:Activity的生命周期

    启动 -> onCreate() —> 停止(不可见) —> onStart() —> 暂停(用户可见) — onResume() —> 运行(可见&在前台) —> 离开前台 —> onPause() —> 暂停(可见) —> 不再可见onStop() —> 停止(不可见) —> 完成或销毁onDestroy() —> 不存在

    onCreate() —> onStart() —> onResume() —> onPause() —> onStop() —> onDestroy()

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

    @Override注解,就是要求编译器保证当前类具有你要覆盖的方法。(比如我们onCreat输错了方法名,编译器就可以帮我们找出这个错误)

    3.2 旋转设备与Activity生命周期

    旋转设备时,系统会销毁当前QuizActivity实例,然后创建一个新的实例。

    旋转设备会改变设备配置(device configuration),设备配置是用来描述设备当前状态的一系列特征(包括屏幕的方向,屏幕的密度、屏幕的尺寸、键盘类型、底座模式以及语言)
    在运行时配置变更发生时,可能会有更适合的资源来匹配新的设备配置。
    

    首先需要在res下新建一个layout-land的文件夹:右键res —> Android resourece directory菜单,DIrectory name和Resourece type都选择layout,保持Resource Set的main不变。接下来将Orientation转移到右边。然后切换到Landscape。

    将layout中的activity_quiz.xml复制到layout-land目录下。

    FrameLayout是最简单的ViewGroup组件,它不以特定方式安排其子视图的位置。FrameLayout子视图的位置取决于他们各自的Android:layout_gravity属性。

    Activity要显示一个新布局,需再次调用setContentView(R.layout.activity_quiz)方法,所以设备一经旋转,则会销毁当前activity,然后再创建新的activity。

    3.3 设备旋转前保存数据。

    旋转设备时,需要保存上次的数据。所以需要覆盖Activity的一个方法:protected void onSaveInstanceState(Bundle outState)
    方法onSaveInstanceState()方法的默认实现要求所有uactivity视图将自身状态数据保存在Bundle对象中,Bundle是存储字符串键与限定类型值之间映射关系(键值对)的一种结构。
    覆盖onSaveInstanceState(Bundle)方法,将一些数据保存在bundle中,然后在onCreate方法中取回这些数据。
    

    注意:Bundle中存储和恢复的数据类型只能是基本数据类型以及其他可以实现Serializable或者Parcelabel接口的对象。(Bundle中保存定制类对象不是一个好主意)(其实手机应用的话,一般都会设置为不允许旋转)

    3.6 深入学习:日志记录的级别和方法。

    级别 方法 说明
    ERROR Log.e(…) 错误
    WARNING Log.w(…) 警告
    INFO Log.i(…) 信息类消息
    DEBUG Log.d(…) 调试输出,可能被过滤掉
    VERBOSE Log.v(…) 只用于开发

    相关文章

      网友评论

          本文标题:Android编程权威指南读书笔记 - 第三章

          本文链接:https://www.haomeiwen.com/subject/ppgtwctx.html