我想知道如果,每当我在我不得不暂时隐藏一些UI元素的情况下,它足以隐藏它(许多框架给此选项)或者是否应删除该对象在内存中,以后当重新创建它再次需要(使用相同的参数)。
每种解决方案的优缺点是什么?我在想,也许通过隐藏元素来保存可能很重要的状态信息,并且还节省了分配时间,因此对于必须在短时间内隐藏的元素来说,这可能是更好的方法。但是如果时间变得更大呢?然后我会在内存中有一个不需要的对象。
一个例子,为了清楚地说明我所说的内容,将是一个工具栏,可根据某些上下文更改来更改按钮。也就是说,通常工具栏上附有一些按钮,但是当用户在界面的其他部分选择一个动作时,必须用新的按钮替换这些按钮(其中一个是“完成”按钮)。同样,当用户选择工具栏中的“完成”按钮时,它会返回初始状态。
我不知道这是不是一个愚蠢的问题,也许我可能会做一些像过早优化的事情......但我会感谢你的所有答案。
答案 0 :(得分:3)
我认为拇指的一般规则是你计划重新演绎的元素应该被隐藏;否则被破坏(一些例外显然适用)。当/如果这变得不可行时,您可以考虑进一步优化。
答案 1 :(得分:1)
这是一个非常好的问题。以下是我的想法:
假设(仅为了论证)你有很多不同的形式可以在同一个空间中显示。然后,如果您创建/销毁控件,则您只能在任何时候为用户可以看到的控件付费。另一方面,如果你隐藏/显示控件,你会花费很多时间来处理用户没有看到的大量控件(并且可能永远不会看到)。所以我总是创造/破坏。 (实际上我在池中保留以前使用的控件,所以我实际上并没有重新创建它们。)
很多人将用户状态存储在用户界面的控件中,但我个人不喜欢,我从不这样做。我认为如果一些信息值得记住它属于应用程序数据结构。这当然意味着当前可见形式的控制必须与应用程序数据结构“绑定”或保持最新。我只是确保无论如何都能做到。
我必须有创造力才能以简化应用程序代码的方式实现这些目标,因此the method I use并不为人所熟知,这确实是另一种代价。
答案 2 :(得分:0)
这个问题没有一般答案。这取决于系统类型,CPU和RAM限制,有问题的UI元素的数量,UI的显示/重建频率等等。也许如果你能给出一个例子我们可能会给你更简洁反馈
答案 3 :(得分:0)
Javascript对象不像Windows(GDI)对象:它们通常没有发送/接收消息的意愿 - 几乎是被动的。隐藏的代码更少,对吧? 也许这取决于每个用户会话的交互式对象总量。