【问题标题】:Eclipse RAP: Best practice for "dispose" of widgets?Eclipse RAP:“处置”小部件的最佳实践?
【发布时间】:2025-12-01 19:55:02
【问题描述】:

我是 Eclipse RAP 的新手,没有使用 SWT 或 Eclipse RCP 的经验。但我知道开发人员有责任处置 SWT 小部件,因为它们具有会阻塞操作系统资源的本机对等点。

但是在 RAP 应用程序中“处理”呢?管理操作系统资源(可能是文件对话框)是浏览器的问题。所以对于纯粹的 RAP 应用程序来说,“dispose”似乎是不必要的,对吗?

现在,如果我想使用 SWT 和 RWT 进行单一来源,即相同的源代码作为独立的 RCP 应用程序和 RAP Web 应用程序运行。 关于“处置”的最佳做法是什么?应该如何触发?需要处理什么?

【问题讨论】:

  • 我找到了“RAP 和单一采购入门”指南。它涵盖了第 9 章“SWT 资源”中的问题。该指南是免费的,但需要注册:eclipsesource.com/en/about/contact-us/… 底线:使用 JFace 已经提供的 *Registry 类。您无需自己管理资源,而是让注册表来完成工作。实例化和资源回收都不需要手动完成。最大的优势是这种方法可以在 RCP 和 RAP 中使用,因此不需要有不同的实现。

标签: swt eclipse-rcp eclipse-rap


【解决方案1】:

在处理小部件方面,SWT 和 SWT/RAP 没有区别。

虽然 SWT 小部件在未释放时持有本机操作系统/窗口系统资源,但 RAP 小部件在它们存在时持有浏览器资源,即 DOM 节点。在不再需要小部件时将其丢弃,并尽可能懒惰地创建小部件。

【讨论】:

    【解决方案2】:

    至于需要处理的内容 - 使用 dispose 方法的任何内容!那是从WidgetResource 派生的任何东西。

    Widget 派生的对象(控件、组合等)的处置通常在 Shell 关闭时自动处理。

    处理派生自Resource 的对象(例如ColorGCFont、...)必须由您的代码完成。一旦不再需要它们,您应该立即处理它们。未能处置这些物品是常见的错误。

    【讨论】:

      最近更新 更多