Sto costruendo un'app per Android in cui ogni entità ha una bitmap che rappresenta il suo sprite. Tuttavia, ogni entità può essere duplicata (potrebbero esserci 3 copie di entità asdf per esempio).Debole hashmap con riferimenti deboli ai valori?
Un approccio consiste nel caricare tutti gli sprite in anticipo e quindi inserire lo sprite corretto nei costruttori delle entità.
Tuttavia, voglio decodificare le bitmap pigramente, in modo che i costruttori delle entità decodificheranno le bitmap. L'unico problema è che le entità duplicate caricheranno la stessa bitmap due volte, usando 2x la memoria (o n volte se l'entità viene creata n volte).
Per risolvere questo problema, ho creato un SingularBitmapFactory che memorizzerà un bitmap decodificato in un hash e, se viene richiesto di nuovo lo stesso bitmap, verrà semplicemente restituito quello precedente e non ne verrà creato uno nuovo. Il problema, tuttavia, è che la fabbrica contiene una copia di tutte le bitmap e quindi non verrà mai raccolta la garbage collection.
Qual è il modo migliore per passare l'hashmap a uno con valori debolmente referenziati? In altre parole, voglio una struttura in cui i valori non saranno GC se qualsiasi altro oggetto contiene un riferimento ad esso, ma fino a quando nessun altro oggetto lo fa riferimento, allora può essere GC'd.
di te! È piuttosto semplice e MOLTO efficace in caso di gestione di bitmap. Solo utilizzando il percorso assoluto come chiave ed è molto conveniente e ha contribuito a eliminare le perdite –