快速业务通道

Eclipse中的图片资源管理 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-15
行管理的基础上,做了那些补充:

put(String key, Image image)       //注册image put(String key, ImageDescriptor descriptor) //注册descriptor Image get(String key)          //获取imge ImageDescriptor getDescriptor(String key)  //获取descriptor remove(String key)           //取消注册 dipose()                //销毁资源

通过对ImageRegistry简要的分析之后,我们的结论如下:

1、如果以put(String key, ImageDescriptor descriptor)的方式注册,ImageRegistry直接讲 descriptor委托给ResourceManager委托管理,自己并不承担管理任务。而且,ImageRegistry对这种方式 注册的ImageDescriptor所创建的系统图片资源的销毁也委托给ResourceManager进行,并不是在以上自己 的dispose方法中进行,而是在ResourceManager.dispose方法中进行。

2、如果以put(String key, Image image)的方式注册,ImageRegistry做了部分的补充管理,其将 image包装进自己的OriginalImageDescriptor(ImageRegistry的一个内部类,继承自ImageDescriptor, 对图片资源本身增加引用计数)实现中,并对image本身进行了引用计数管理。同时,对这种方式注册的 图片资源的销毁是ImageRegistry自己承担的,在自身的dispose方法中完成。(注意,在ImageRegistry 的构造方法中,将ImageRegistry.dispose封装为一个runnable注册到了ResourceManage的dispose过程中 ,而ResourceManage.dispose已经在JFaceResources.getResources方法中被hook到了Display的资源销毁 过程中)。

3、通过1和2的结论,JFace ImageRegistry对系统资源的销毁已经做了两手准备,

其并不希望用户自己来销毁资源(无论是通过Image.dispose还是ImageDescriptor.destoryResource ,或者ImageRegistry.dispose),当然,ImageRegistry允许通过remove接口来取消注册。

JFaceResources

+提供hook机制

ImageRegistry

+自己管理部分资源

ResourceManager

+管理ImageDescriptor及其创建的资源

【ImageRegistry的适用场景和使用规则】

通过上面的实现原理分析,我们知道ImageRegistry并不欢迎用户来过多地参与图片资源的释放过程, 所以ImageRegistry适用于如下场景:

1、决定共享和高度复用的图片资源。这种资源一般是被使用的特别频繁,同时,不急于销毁,只要在 Display release的时候销毁掉就可以了,所以既可以利用到图片资源本身缓存的优势(减少物理创建的 次数),又可以利用其Display的hook销毁机制,确保会被销毁。

2、用户可以直接使用ImageRegistry(不通过JFaceResources.getImageRegistry的方式使用),复用 部分ImageRegistry的管理功能,开发自己的缓存策略,但是,要确保自己会在合适的地方调用 ImageRegistry.dispose方法来销毁registry。Eclipse Workbench中的shared images机制就用了这一点 。

Eclipse中的图片资源管理(6)

时间:2011-08-05 朱兴

ImageRegistry的使用规则如下:

1、谁创建,谁负责。具体图片资源的创建是由ImageRegistry负责的,用户既然托管了,就不应该再 干预资源的释放。而且,注册进ImageRegistry的资源是共享的,一个用户释放了,会影响到其他用户的 使用。当然,对于比较熟悉JFace ImageRegistry原理的开发者,可以参与到引用计数的管理,通过这种 方式,以安全的、不影响其他用户使用的方式来间接参与释放的过程。

2、非共享图片资源请不要交由ImageRegistry托管。对于一个仅限于局部使用而且使用并不是十分频 繁的图片资源,这样做不会带来什么好处,而且,尤其是对于不能参与到引用计数管理的初级用户,这样 做反而会使得一个本可以马上释放的图片资源反而会一直占用

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号