【发布时间】:2018-02-04 04:59:10
【问题描述】:
作为软件架构工作多年,我讨厌在可以避免使用单例的情况下使用它们。但是当单例似乎是唯一的选择时,我不得不为 android 应用程序做一些任务。可能有人可以提出其他建议吗?
任务是创建一个 UI 向导来创建一些新实体(在我的例子中是行程描述)。实体很复杂,需要多个页面来完成其所有数据。
当用户进入下一页时,向导被组织为一个接一个地推回堆栈的几个片段。但是所有片段都应该与编辑实体的一个实例一起使用。当重新创建活动时(在轮换或其他情况下),该实体应该保持活动状态。如果页面只有一个,我可以在 onSaveInstanceState 中保存/恢复实体。但是,如果我将在我的向导的所有片段中这样做,所有片段都将拥有自己的实体实例(因为它们都保存它然后恢复)。并且向导会出错(例如,当您导航回以前的页面时)。
为了更痛苦,假设拥有此片段的活动不应该知道有关此特定向导的任何信息,并且我不会将任何特定于此向导的代码放入活动中。在我的情况下,禁用活动也不是一种选择。
所以在这种情况下,显而易见的解决方案是创建包含我的编辑实体的单例。并使所有的向导片段都与这个单例一起工作。毫无疑问,我 90% 的程序员都会选择这样的解决方案。但我的大脑反对它。当实体本质上不是单例时,为什么我应该将其设为单例???
因此,如果有人可以提出不同的建议,我将不胜感激。
【问题讨论】:
-
“服务”在android方面?
标签: android android-fragments architecture singleton