`
dearwolf
  • 浏览: 339531 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

关于Dispose SWT资源的思考与疑问

swt 
阅读更多
我们知道,在SWT中,有两条关于Dispose的法则:

1。如果你创建了它,那么就dispose它。你应当释放那些使用构造器创建了的SWT对象。

2。dispose一个父组件会dispose掉所有的子组件。

由 此可以得知,由于Color,Cursor,Font,GC,Image,Printer,Region都是在DeviceData之上创建,所以如果使 用构造器的话,就必须要手工把这些资源dispose掉,而如果使用Font font = control.getFont ()这样的方式的话,就不可以调用font.dispose()方法,因为它不是被我们创建的。

还可以得知,因为Widget及其所有子类的构造器都需要一个父Widget作参数(常用的也就是Shell或者Composite),所以是不是得到这样的结论:

在RCP应用中,当程序关闭时,Display会被Dispose,那么最顶层的Shell也会被dispose,于是递归下来,所有的Widget也会被 dispose了?所以只需要对使用构造器创建的Color,Cursor,Font,GC,Image,Printer,Region调用 Dispose方法就可以了?

还有一个疑问,项目中肯定要用到不计其数的image的,这种情况下,是在每一个用到Image的Widget上添加disposeListener好呢,还是最后在程序关闭的时候dispose所有的image?
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics