安卓 UI 开发实用指南(四)

原文:zh.annas-archive.org/md5/0ffc7f04a3e132a02fea5cc6b989228c

译者:飞龙

协议:CC BY-NC-SA 4.0

第十三章:Activity生命周期

应用程序中的每一个Activity都在 App 进程中运行,但每个Activity也都有自己的生命周期。这些方法是在Activity即将改变状态时由平台触发的,例如,当用户暂时退出Activity去使用另一个Activity(无论它是在同一应用程序中,还是另一个应用程序中)时。Fragment对象也受到生命周期的约束,虽然它主要遵循与Activity生命周期相同的模式,但它也有从其父Activity中“附加”和“分离”的概念。

下面的流程图详细解释了Activity的生命周期:

https://github.com/OpenDocCN/freelearn-mobi-zh/raw/master/docs/hsn-andr-ui-dev/img/4dafc4c3-acbe-4094-8a74-42f86db92d15.png

第十四章:测试您的知识答案

本附录包含章节中出现的所有“测试您的知识”测验的答案。

第二章 - 设计表单屏幕

  1. 设计表单屏幕时,您应该首先考虑什么?

    • 您需要从用户那里获取的数据 - 这将确定所需的字段并将指导您的其他决策
  2. 材料设计中的标准间距增量是多少?

    • 8 密度无关像素
  3. ConstraintLayoutViewPagerCardView是支持 API 的一部分。这意味着什么?

    • 如果您使用它们,它们的字节码必须包含在您的应用程序中
  4. 当构建新的布局时,您的根小部件应该是以下哪一个?

    • 对您布局来说有意义的简单小部件 - 其他选项可能提供更多功能,但会消耗更多系统资源

第三章 - 执行操作

  1. 实现事件处理器的最佳方式是什么?

    • 没有一个 - 您需要考虑每个案例,并选择最合适的模式
  2. 改变用户界面小部件状态的任何方法的条件是什么?

    • 它们必须从主线程调用
  3. 作为事件处理程序部分运行的代码应满足以下哪些条件?

    • 只与用户界面交互 - 其他任何操作都应该在工作线程上完成
  4. 当从另一个Activity请求数据时,数据通过以下哪种方式返回?

    • 您的Activity对象上的回调

第四章 - 组合用户界面

  1. 当开发布局子类时,以下哪个选项是最好的?

    • 避免将 ID 属性分配给子小部件 - ID 属性可能导致应用程序中出现意外的副作用
  2. 以下哪项适用于在onCreate中传递给ActivityBundle

    • 它在onSaveInstanceState方法中填充
  3. Adapter的数据发生变化时,以下哪项会发生?

    • 它应该通知任何附加的监听器
  4. 片段和View类应满足以下哪些条件?

    • 它们应该从Activity将数据和状态推入它们

第五章 - 将数据绑定到小部件

  1. Android 的数据绑定框架遵循哪种类型的绑定?

    • 模型-视图(单向)绑定
  2. 数据绑定布局具有必须满足以下哪些条件的变量?

    • 任何 Java 对象
  3. 以下哪个功能属于数据绑定表达式?

    • 它们是一种特殊的表达式语言
  4. 要触发数据绑定用户界面的更新,您必须执行以下哪项?

    • Binding对象进行更改,使其可以观察

第六章 - 存储和检索数据

  1. Android 的 Room API 提供了以下哪些?

    • SQLite 之上的轻量级 API
  2. 从 Room DAO 返回LiveData需要您执行以下哪项?

    • 您观察它以获取更改以检索数据
  3. 不返回LiveData的数据库查询应该做什么?

    • 应在工作线程上运行
  4. 为 Room 编写更新方法需要列出哪些?

    • 接口上的一个@Update方法,接受一个Entity对象

第七章 - 创建概览屏幕

  1. RecyclerView的实例将为以下哪个创建一个View实例?

    • 屏幕上可见的每个数据项
  2. 当将观察者附加到LiveData时,你需要做以下哪些?

    • 提供一个有效的LifecycleOwner
  3. 概览/仪表板屏幕应该具备以下哪些功能?

    • 它们应该首先显示最重要的信息概览
  4. ViewHolder类被RecyclerView用来做什么?

    • 提高数据绑定性能
  5. 当使用LiveData对象引用多个Fragment对象使用的数据时,以下哪个是正确的?

    • Fragment实例必须共享相同的LiveData引用以查看更改

第八章 - 设计材料布局

  1. 应该使用高度来表示以下哪个?

    • 为了在平面布局上方选择性地突出显示一个项目
  2. CoordinatorLayout可以用来协调以下哪些之间的移动和大小?

    • 任何其直接子小部件
  3. 为了以向后兼容的方式更改小部件的高度,你需要做以下提到的哪个?

    • 使用ViewCompat
  4. 应该在以下哪种情况下使用GridLayout类?

    • 为了沿着网格线布局屏幕

第九章 - 高效导航

  1. 当使用底部标签进行导航时,以下哪个很重要?

    • 标签的重要性大致相等
  2. 在以下哪种情况下,顶部标签比底部标签更受欢迎?

    • 当用户不需要频繁导航时
  3. 在以下哪种情况下可以使用片段进行导航?

    • 任何用户在应用程序内导航的时候
  4. 当用户在导航抽屉中选择一个项目时,以下哪个是正确的?

    • 应该以编程方式关闭抽屉

第十章 - 使概览更加完善

  1. 在单个RecyclerView实例中,你可以使用多少种不同的视图类型?

    • 任何数量
  2. 当使用DiffUtil时,以下哪个适用于你正在比较的数据?

    • 它通过回调公开
  3. 当向RecyclerView添加分隔符时,你应该做以下哪个?

    • 使它们成为数据集中的独立项目

第十一章 - 精炼你的设计

  1. 当选择配色方案时,强调颜色应该具备以下哪些特征?

    • 它与主颜色相辅相成
  2. 动态生成调色板应该满足以下哪些条件?

    • 应该在后台线程上执行
  3. 在你的应用程序中动画布局时,应该牢记以下哪个?

    • 它们不应该阻碍或分散用户实现目标
  4. 可以使用自定义样式来定义以下哪个?

    • 布局资源文件中任何属性的默认值

第十二章 - 定制小部件和布局

  1. 当渲染自定义部件的专业图形时,你需要做以下哪个?

    • 覆盖onDraw方法
  2. 应该在哪里创建用于在onDraw中渲染的图形原语实例,如DrawablePaintPath

    • 任何不影响onDraw的直接地方
  3. 布局过程中涉及的两个阶段是什么?

    • 测量然后布局
  4. 当绘制一个Drawable对象时,你需要做以下哪一项?

    • 传递一个有效的Canvas对象
  5. 要告诉平台一个小部件需要重新绘制自己(从主线程),你使用以下哪一个?

    • View.invalidate()
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值