您的当前位置:首页Saving UI States

Saving UI States

2024-12-13 来源:哗拓教育

保存UI状态

你做或者不做,保存UI状态,是用户体验的重要组成部分。无论用户是否旋转设备,用户重新启动应用程序,或系统关闭应用程序,activity保持用户期望的状态都是十分重要的。

本页讨论了每种方法。

1. 处理简单的情况:onSaveInstanceState()

  • 由于内存限制,程序处于后台时系统会 。
  • 发生,例如屏幕旋转或更改输入语言。

本文档的下一部分提供了有关保留更复杂的数据的更多细节。

3.管理复杂的状态:分而治之

如果在活动结束时需要保留更复杂的数据结构,则可以通过将工作划分为多种类型的存储机制来有效地保存和恢复UI状态。

用户可以通过两种常规方式离开活动,导致用户可能期望得到两种不同的结果:

  • 用户完全关闭活动。如果用户将活动从“最近”屏幕上滑下,从活动向上导航或从活动中退出,用户可以完全关闭该活动。在这些情况下的假设是用户已经永久导航离开活动,并且如果他们再次打开活动,则他们将期望从干净状态开始。

  • 用户旋转手机或将该活动置于后台,然后返回。例如,用户执行搜索,然后按下主页按钮或接听电话。当他们返回到搜索活动时,他们希望能够像以前一样找到搜索关键字和结果。

  • 本地持久性:如果您打开并关闭活动,则存储您不想丢失的所有数据。
    • 示例:歌曲对象的集合,其中可能包含音频文件和元数据。
  • :存储在内存中与UI控制器显示关联的所需的所有数据。
    • 示例:最近搜索的歌曲对象和最近的搜索查询。
  • :存储少量数据,以便在系统停止时轻松地重新加载活动状态,然后重新创建UI控制器。而不是在这里存储复杂的对象,坚持在本地存储复杂的对象,并使用存储在这些对象的唯一ID。
    • 例如:存储最近的搜索查询。

举个列子,一个activity可以让你搜索你的歌曲库。以下是应如何处理不同的事件:

4. 恢复复杂的状态:重新组装

当用户返回活动时,有两种可能的方案来重新创建活动:

  • 该活动在被系统停止后重新创建。该活动将查询保存在一个包中,并将查询传递给。了解到没有缓存搜索结果,然后使用给定的搜索查询代表加载搜索结果。
  • 活动是在配置更改后创建的。活动已经将查询保存在包中,并且已经将搜索结果缓存起来。将包中的查询传递给,这意味着已经加载了必要的数据,并且不需要重新查询数据库。
显示全文