Hirdetés
- A '90-es évek jutnak az eszünkbe az ATK készülő egeréről
- Huszadik születésnapjára eléggé megváltozott az Antec nagytornya
- Még a saját szövetségeseivel szemben is fegyverként használná az AI-t az USA
- Mégis meglepi egy új GeForce-szal a rajongókat az NVIDIA?
- Lassan 2027-re is elfogy a TSMC 2 nm-es gyártókapacitása
- TCL LCD és LED TV-k
- Androidos tablet topic
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Home server / házi szerver építése
- Ilyen olcsó sem volt még egy Apple notebook
- Pedzegeti az új Xbox irányát a Microsoft
- Milyen billentyűzetet vegyek?
- Milyen belső merevlemezt vegyek?
- Projektor topic
- Azonnali informatikai kérdések órája
Új hozzászólás Aktív témák
-
Karma
félisten
válasz
lordjancso
#1221
üzenetére
Semmi nagy dologra nem gondoltam, két dolgot változtatnék a példán a rend kedvéért:
1) Ahogy nézem, nem használja fel az URLImageGetter a konstruktorban átadott Contextet, úgyhogy a tagváltozót és a paramétert törölném azonnal. Ha meg mégis kéne, akkor a View-tól kérném el.
2) A container tagváltozója ugyanennek az osztálynak erősen kapaszkodik (hard reference) a View-ba, úgyhogy ha mondjuk a letöltés tíz percig tart, a felhasználó már régen továbbállt mert megunta, akkor se tudja a GC felszabadítani az egész Activityt.
Könnyen elkerülhető, ha a container tagváltozó nem View, hanem WeakReference<View> típusú. Két sort kell módosítani hozzá, és máris nem akadályozza a GC-t – csak le kell ellenőrizni onPostExecute-ban, hogy megvan-e még a View, vagy már vége.public class URLImageParser implements ImageGetter {
WeakReference<View> container;
public URLImageParser(View t) {
this.container = new WeakReference<View>(t);
}
public class ImageGetterAsyncTask extends AsyncTask<String, Void, Drawable> {
URLDrawable urlDrawable;
...
@Override
protected void onPostExecute(Drawable result) {
View c = URLImageParser.this.container.get();
if (c == null) return;
...
// redraw the image by invalidating the container
c.invalidate();
}
...
}
}[ Módosította: doc ]
Új hozzászólás Aktív témák
- Apple iPhone 17 Pro 256GB Deep Blue használt, karcmentes 100% akku (16 ciklus) Apple garancia
- HIBÁTLAN iPhone 12 Pro Max 128GB Pacific Blue -1 ÉV GARANCIA - Kártyafüggetlen, 100% Akkumulátor
- iPhone 15 Pro Max 512GB 87% Esim-es verzió (3hónap Garancia) Kijelzőn pici folt!
- Lenovo ThinkPad E15 Gen 2 15,6" - i7 1165G7, 16GB RAM, 512GB SSD, jó akku, számla, 6 hó gar
- 3M füldugó 50 pár (100db) eladó
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest

