3

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

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

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

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

4

4 回答 4

3

我认为一般的经验法则是您计划重新展示的元素应该被隐藏;否则被销毁(显然有一些例外)。当/如果这变得不可行时,您可以考虑进一步优化。

于 2010-09-06T22:42:08.530 回答
1

这是一个很好的问题。这就是我发生的事情:

  • 假设(只是为了论证)您有许多不同的形式可以显示在同一个空间中。然后,如果您创建/销毁控件,您只需在任何时候为用户可以看到的控件付费。另一方面,如果您隐藏/显示控件,则您一直在为用户没有查看(并且可能永远不会查看)的大量控件付费。所以我总是创造/破坏。(实际上我将以前使用的控件保留在池中,所以我实际上并没有重新创建它们。)

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

我必须具有创造性才能以简化应用程序代码的方式完成这些,因此我使用的方法并不为人所知,这需要另一种代价。

于 2010-09-06T22:54:51.773 回答
0

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

于 2010-09-06T22:42:45.277 回答
0

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

于 2010-09-06T22:48:07.340 回答