> Sinon je pense qu'il y a moyen de faire avec les Weak-References
SoftReference semble plus �tre la solution a ton probl�me.
Tu d�sires conserver l'image tant que la m�moire le permet (c'est le but de
SoftReference).
Avec WeakReference, tu risques de perdre ton image alors qu'il reste de la
m�moire.

> que fait la m�thode MediaTracker...

Sur internet pour obtenir une image il faut faire une requ�te vers le
serveur qui ensuite te r�pond par petits bouts.
Le MediaTracker permet de d�clencher le t�l�chargement par petit bout et de
te fournir l'image au fil de l'eau, ce qui permet de commencer a afficher
une image alors que l'on n'a pas tout re�u. 

Dans ton cas je g�rerais une classe qui donne acc�s aux image.
Pour ajouter une image au stock, on fournit l'url.
Pour obtenir l'image, on demande � partir de l'url.

En interne un Hashset associ� une URL avec le SoftReference de l'image.
Ca permet au GC de d�truire tes images s'il en a besoin :-)

Si le SoftReference a perdu ton image ou si l'image n'�tait pas encore
connue, tu te serts de l'URL du MediaTraker pour charger l'image (et tu mets
� jour ton Hashset).


--------------------------------------------------------------------
Erik Mazoyer, Chef de projet
HyperOffice
6, rue Jacques Daguerre - 92565 Rueil-Malmaison Cedex
T�l. 01 41 96 96 76
Fax 01 41 96 96 77
M�l  [EMAIL PROTECTED] 
 

-----Message d'origine-----
De : Jean Michel Flambard [mailto:[EMAIL PROTECTED]]
Envoy� : mardi 1 octobre 2002 16:16
� : [EMAIL PROTECTED]
Objet : Re: D�charger une image


> Dans mon applet j'ai un MediaTracker pour suivre et lancer
> le chargement de plusieurs images.
> Mes images sont trop nombreuses pour �tre charg�es toutes en m�me
> temps (voir mes messages pr�c�dents de dimanche).
> Donc je voudrais les charger par petits paquets.
>
> Exemple:
>
> 1 - je charge 5 images avec tracker.waitForID(0);
> 2 -Je les affiche (l'une apr�s l'autre comme dans un diaporama).
> 3 - Je d�charge ces 5 images pour c�der de la place m�moire aux images
> suivantes.
> 4 - je charge les 5 images suivantes (retour en 1 [bouche sans fin]).
>
> Mon probl�me est que je ne sais pas comment d�charger des images de la
> m�moire.
> Je comptais sur la m�thode tracker.removeImage(id) mais apparement
celle-ci
> ne fait
> qu'enlever l'image du m�diaTracker sans la d�charger de la m�moire.
>
> Les images sont dans un vecteur et doivent s'afficher sans fin (dans une
> boucle) je ne peux
> donc pas les d�truire ou attendre que le GarbageCollector le fasse.
>
> Quelqu'un peu m'aider SVP ?
>
> Merci d'avance,
>
> Jean Michel Flambard
> ----------------------------
>
> Si tu veux que le GC les d�truise il ne faut pas les garder dans un
Vector.
> Tu peux ne garder qu'un Vector des URL de ces images et une autre
collection qui stocke les images effectivement en m�moire (une sorte de
ring-buffer pour les images).
>
> Sinon je pense qu'il y a moyen de faire avec les Weak-References mais je
n'ai fait que lire la doc... pas encore pratiqu�. Mais �a semblerait
convenir.

En fait je ne souhaite pas d�truire mes images.
Mais y a truc que je comprends bien:
que fait la m�thode MediaTracker.waitForID(0); ?
Elle charge les images disponibles dans le MediaTracker pour que
l'application puisse
les afficher apr�s, non ?
Donc ce que je cherche � faire (ou � utiliser), c'est une m�thode qui
d�charge de la m�moire les images affich�es
mais qui me laisse les images disponibles dans le vecteur (et le
MediaTracker, pour ne plus avoir
besoin d'appeller la m�thode tracker.addImage(image, 0)).

C'est pas possible ?

Par contre la solution d'un vecteur d'URL des images est la plus tentante si
il n'y a pas de
moyen de faire ce que je veux.

Merci Patrice en tout cas !

Jean-Michel

Répondre à