Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
User interface 我应该隐藏还是销毁UI元素?_User Interface_Optimization_Element_Paradigms - Fatal编程技术网

User interface 我应该隐藏还是销毁UI元素?

User interface 我应该隐藏还是销毁UI元素?,user-interface,optimization,element,paradigms,User Interface,Optimization,Element,Paradigms,我想知道,每当我遇到必须暂时隐藏某个UI元素的情况时,隐藏它是否足够(许多框架都提供此选项),或者我应该删除内存中的对象,然后在需要时重新创建它(使用相同的参数) 每种解决方案的优缺点是什么?我在想,也许通过隐藏元素,可以保存可能很重要的状态信息,还可以节省分配时间,因此,对于必须在短时间内隐藏的元素,这可能是更好的方法。但是如果时间变大了怎么办?然后,我会一直在内存中存储一个不需要的对象 举一个例子,让我清楚地了解我所说的,就是一个工具栏,它可以根据上下文的变化来改变按钮。也就是说,通常工具栏

我想知道,每当我遇到必须暂时隐藏某个UI元素的情况时,隐藏它是否足够(许多框架都提供此选项),或者我应该删除内存中的对象,然后在需要时重新创建它(使用相同的参数)

每种解决方案的优缺点是什么?我在想,也许通过隐藏元素,可以保存可能很重要的状态信息,还可以节省分配时间,因此,对于必须在短时间内隐藏的元素,这可能是更好的方法。但是如果时间变大了怎么办?然后,我会一直在内存中存储一个不需要的对象

举一个例子,让我清楚地了解我所说的,就是一个工具栏,它可以根据上下文的变化来改变按钮。也就是说,通常工具栏上会附加一些按钮,但当用户在界面的其他部分选择一个操作时,这些按钮必须替换为新按钮(其中一个是“完成”按钮)。类似地,当用户选择工具栏中的“完成”按钮时,它会返回到初始状态


我不知道这是否是一个愚蠢的问题,也许是因为我在做一些类似于过早优化的事情。。。但是我会感谢你所有的回答。

我认为一般的经验法则是,你计划重新展示的元素应该隐藏起来;否则将被销毁(某些例外情况显然适用)。当/如果这是不可行的,你可以考虑进一步的优化。

这个问题没有一般的答案。这取决于系统类型、CPU和RAM限制、相关UI元素的数量、显示/重新创建UI的频率等。如果您能给出一个示例,我们可能会为您提供更简洁的反馈。

Javascript对象与Windows(GDI)不同对象:他们通常没有发送/接收消息的意愿——几乎是被动的。隐藏代码所需的时间更少,对吗?
也许这取决于每个用户会话的交互对象总数。

这是一个很好的问题。我想到的是:

  • 假设(只是为了论证)你有很多不同的表格可以显示在同一个空间里。然后,如果您创建/销毁控件,您只需在任何时候为用户可以看到的控件付费。另一方面,如果您隐藏/显示控件,那么您就一直在为用户看不到(也可能永远看不到)的大量控件付费。所以我总是创造/毁灭。(实际上,我将以前使用过的控件保留在池中,因此我不会实际重新创建它们。)

  • 许多人将用户状态存储在UI的控件中,但就我个人而言,我讨厌这样做,而且我从来没有这样做过。我认为,如果某些信息值得记住,它就属于应用程序数据结构。当然,这意味着当前可见表单的控件必须与应用程序数据结构“绑定”或保持最新。我只是确保我能做到这一点,无论发生什么


我必须创造性地以一种简化应用程序代码的方式来完成这些任务,结果并不为人所知,这需要另一种价格。

我希望在将来使用的元素或部分,但是我已经开发了,我不能在这个更新/版本i中发布他的功能,我隐藏并且从不向用户显示,我认为这是这个经验法则的一个例外,因为我不必在其他文件/项目中隐藏我以后想在这里使用的代码。或者,如果您正在开发大型项目、表单的某些部分等,您可以部署,并且在以后的几个版本中,您必须阻止此功能,然后您可以在项目中简单地隐藏此表单,并在以后的其他更新中以完整或部分的形式使用此表单