2017-01-19 13 views
2

私のEclipseプラグインプロジェクトにはいくつかのイメージがあり、いくつかのフォントが使用されています。そこで、イメージを管理するためにImageManagerという名前のシングルトンクラスを作成しました。このクラスは、イメージオブジェクトをプロジェクト全体で1つにすることができます。Eclipseプラグインプロジェクトでリソース(イメージ、フォント、色)を管理する方法は?

しかし、それは完璧ではなく、適切な時期に画像を処分できません。画像、フォント、色などを含め、これらのリソースを管理するためのより良い仕組みが必要です。

+0

見て、' FontRegistry'、 'ColorRegistry'、...あなたにたくさんありがとうござい –

答えて

1

JFaceは、画像、フォント、および色の作成と廃棄に役立つResourceManagerクラスを提供しています。

各リソースタイプには、対応するリソース記述子:ImageDescriptor,FontDescriptorColorDescriptorもあります。リソース記述子は、オペレーティングシステムリソースを占有することなくイメージ/フォント/色を参照する軽量オブジェクトです。

リソース記述子には、例えば、実際のリソースを作成することができます:

ImageDescriptor imageDescriptor = ImageDescriptor.createFromURL("..."); 
Image image = imageDescriptor.createImage(); 

ResourceManagerは、リソース記述子と処分されたときに、それが直接作成した自由なすべてのリソースからリソースを作成し、バッファリングすることができます。

LocalResourceManagerは、SWTコントロールに接続することができ、コントロールが処分されたときに廃棄されます。

子リソース・マネージャが親リソース・マネージャの1つによって以前に割り当てられたリソースを再利用できるように、リソース・マネージャをネストすることもできます。

プラグインにAbstractUIPluginのプラグインアクティベータがある場合は、すでにAbstractUIPlugin::getImageRegistry()からアクセス可能なイメージレジストリがあります。レジストリを埋めるためにinitializeImageRegistry()メソッドをオーバーライドします。 ImageRegistry::get()は使用しないでください。このメソッドは、解放できないイメージを割り当て、プラグインのライフタイム全体にとどまるためです。

ほとんどのワークベンチAPIは、リソース記述子を使用します。 Action::setImageDescriptor()またはIEditorInput::getImageDescriptor()。アプリケーションコードがリソースを使用する場合、この習慣に従って、実際のリソースよりもリソース記述子を使用することをお勧めします。必要なときにのみリソースを作成し、必要なくなったらすぐに廃棄します。 JFaceの `ImageRegistry`でhttps://www.eclipse.org/articles/swt-design-2/swt-design-2.html

+0

クラス:SWTのリソースを使用している場合

この記事では、いくつかの一般的なルールが含まれています。 –

関連する問題