博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[译] Android 生命周期备忘录 — 第三部分:Fragments
阅读量:6881 次
发布时间:2019-06-27

本文共 1352 字,大约阅读时间需要 4 分钟。

  • 原文地址:
  • 原文作者:
  • 译文出自:
  • 本文永久链接:
  • 译者:
  • 校对者:,

本系列文章:

第三部分: Fragments — Activity 和 Fragment 的生命周期(即本文)

为了更方便地查询,你可以去查阅 。

本节中我们将介绍依附在 Activity 上的 Fragment 的行为。不过别把这种情况和加入到返回栈的 Fragment 搞混了(请参看 这篇文章来学习有关 Fragment 事务和返回栈的知识)。

场景 1:当带有 Fragment 的 Activity 启动和终止时

场景 1:当带有 Fragment 的 Activity 启动和终止时

虽然 Activity 的 onCreate 方法保证在 Fragment 的 onCreate 方法之前被调用,但是其它像 onStartonResume 这样的回调会被并行执行,因此它们会被以任意顺序调用。例如,系统可能先调用 Activity 的 onStart 方法再调用 Fragment 的 onStart,但在此之后却先调用 FragmentonResume 方法再执行 Activity 的 onResume

小心管理它们执行的顺序和时间,以避免两者竞争带来的问题。

场景 2:当带有 Fragment 的 Activity 被旋转时

场景 2:当带有 Fragment 的 Activity 被旋转时

状态管理

Fragment 状态的保存和恢复与 Activity 状态非常相似,区别在于 Fragment 中没有 onRestoreInstanceState 方法,但是 Fragment 的 onCreateonCreateViewonActivityCreated 方法中的 Bundle 对象是可被获取的。

Fragment 是可以被保留的,这意味着当配置被改变时可以使用同一个 Fragment 实例。正如接下来的场景中所描述的,被复用的 Fragment 与普通 Fragment 有些许不同。


场景 3:当带有可被复用的 Fragment 的 Activity 被旋转时

场景 3:当带有可被复用的 Fragment 的 Activity 被旋转时

Fragment 对象既没有被创建也没有被销毁,因为在 Activity 被重新创建后,同一个 Fragment 实例被复用了。因此在 onActivityCreated 过程中 Bundle 仍然是可被获取的。

使用可被复用的 Fragment 是不被推荐的,除非你想在配置改变时使用非 UI 的 Fragment 来存储数据。它的功能和内部组件库中的 相同,但 ViewModel 具有更简洁的 API。

如果发现译文存在错误或其他需要改进的地方,欢迎到 对译文进行修改并 PR,也可获得相应奖励积分。文章开头的 本文永久链接 即为本文在 GitHub 上的 MarkDown 链接。


是一个翻译优质互联网技术文章的社区,文章来源为 上的英文分享文章。内容覆盖 、、、、、、、等领域,想要查看更多优质译文请持续关注 、、。

转载于:https://juejin.im/post/5ca3517a6fb9a05e462b967a

你可能感兴趣的文章
【原创翻译】布尔值(boolean)
查看>>
关于scrapy的piplines
查看>>
通向架构师的道路(第一天)之Apache整合Tomcat - lifetragedy的专栏 - 博客频道 - CSDN.NET...
查看>>
Javascript创建对象的7种模式
查看>>
Shell工作笔记01
查看>>
项目、软件开发过程中版本术语
查看>>
CSS实现背景透明,文字不透明(各浏览器兼容)
查看>>
【转】[大学引导]超级链接、字体颜色、音乐播放公式
查看>>
T-SQL中INSERT、UPDATE
查看>>
Linux下Nginx服务器配置Modsecurity实现Web应用防护系统
查看>>
openSUSE13.2安装ruby和rails
查看>>
python 高级函数
查看>>
F.Cards with Numbers
查看>>
简单入门Buffer
查看>>
OO第四阶段总结
查看>>
javascript总结02
查看>>
创建windows服务
查看>>
HTML5 入门基础
查看>>
【转载】读懂IL代码就这么简单(二)
查看>>
C++文件操作(fstream)
查看>>