2013-03-21 55 views
0

我是新的Eclipse开发,并同时学习SWT,我才知道,我需要使用下面的片段处置display是否有必要配置资源的Eclipse插件

while (!shell.isDisposed()) { 
    if (!display.readAndDispatch()) display.sleep(); 
} 
display.dispose(); 

所以其配置的所有通过显示获取的操作系统资源。我的问题是我应该在Eclipse插件中做同样的事情吗?考虑到我们有一个createPartControl()这样的代码:

public void createPartControl(Composite parent) { 
     //Other codes 
     parent.dispose(); //Shoud I compulsory do this in eclipse plugin? 
} 

或者将超过照顾自动配置资源的?我的假设是我应该手动处置。如果我错了,你能否纠正我?

+0

恰当地清理资源只是Java和所有语言的最佳实践。假设它会自动完成,因为你最多只会要求麻烦,最糟糕的时候会马虎。 – duffymo 2013-03-21 13:26:30

回答

1

parent.dispose()是做错的方法。你应该清理你在组合中创建的资源。不要处理父视图,因为它不是由视图/复合视图创建的。

侦听在Widget上处理事件并进行必要的清理。假设您在视图中创建了诸如颜色,字体,图片..等等资源,并且您不想重复使用它们,请在您的合成物上倾听dipose事件并将其添加到其中。

yourComposite.addListener(SWT.dispose, new Listener(){ 

    public void handleEvent(Event e){ 
      image.dispose(); 
      font.dipose(); 
      color.dipose() 

    } 

});