レイヤーのキャッシュ

トリプル・バッファリングは、1 つのビューのレイヤー・セットをキャッシュするために使用します。これらのレイヤーには、レイヤー 0 からレイヤー n まで連続していなくてはならないという制約がありました。JViews 8.1 以降、連続していないレイヤーまたはインデックスが 0 でないレイヤーをキャッシュしたい場合、 IlvManagerView で対象となるビューの任意のレイヤーをキャッシュできるようになりました。
ビューのレイヤーのキャッシュを有効または無効にするには、次のメソッドを呼び出すことができます。
void setLayerCached(int layer, boolean enabled)
レイヤーがキャッシュされているかどうかを確認するには、次のメソッドを呼び出します。
boolean isLayerCached(int layer)
ビューのレイヤーがキャッシュされていると、レイヤーは最初にビューと同じサイズのバッファー・イメージに描画されます。ビューを再描画する必要がある場合、バッファー・イメージがスクリーン上に表示されます。バッファー・イメージは、その後ろにあるレイヤーの情報が隠されないように透明である必要があります。
キャッシュは任意のレイヤーで有効にすることができます。通常、キャッシュは多くの静的グラフィック・オブジェクト、つまり、地図 (地図作成) 情報を持ったレイヤーのように描画が頻繁に変更されないオブジェクトを持つレイヤー上で有効にされます。しかし、これはキャッシュされたレイヤーの内容を変更できないという意味ではありません。レイヤーの内容が滅多に変更しないときには、キャッシュの速度が速くなる利点があるという意味です。操作の挿入、削除、適用などグラフィック・オブジェクトに変更を加えると (「 applyToObject」を参照)、キャッシュは自動的に無効になります。
レイヤーのキャッシュを有効にするか、トリプル・バッファリングを使用するかを迷っている場合、次の点を参考にして決めてください。
  • キャッシュまたはバッファーしたいレイヤーが連続していて、インデックスが 0 から n の場合、トリプル・バッファリングを使用するべきです。この場合、トリプル・バッファリングのほうがレイヤーのキャッシュよりもよいパフォーマンスを得られます。これは、後者は透明度を処理しなくてはならないからです。
  • キャッシュまたはバッファーしたいレイヤーが連続していない場合、レイヤーのキャッシュを使用するべきです。
また、同じビューに両方の機能を使用することもできます。インデックスが 0 から n の連続しているレイヤーにはトリプル・バッファーを使用し、さらにレイヤー n の上で任意のレイヤーをキャッシュすることができます。このようにして、最大限のパフォーマンスを得ることができます。
メモ
非常にまれな設定 (Java SE および OS) では、透明なバッファー・イメージからよいパフォーマンスが得られない場合があります。この場合、レイヤーのキャッシュによってパフォーマンスを改善されるかどうかを確認するために、テストを実行することができます。