Hirdetés
Ú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
- RTX 3080 Gamer - I5 12600KF - 240 AIO - 16GB DDR4 - 500GB SSD - 2TB HDD
- 2x Kingston KVR1333D3D4R9S/8GI (2x8GB) PC3-10600 CL9 RAM
- Intel Pentium E5400, Core 2 Quad Q8200
- Dell Poweredge R320 1U Xeon E5-2470v2 16GB RAM (Proxmox, NAS, stb) 35e
- X1 2-in-1 Gen10 14" FHD+ IPS érintő Ultra 7 268V 32GB 512GB NVMe ujjlolv IR kam aktív toll gar
- BESZÁMÍTÁS! LENOVO ThinkPad P15s Gen2 munkaállomás - i7 1165G7 16GB DDR4 512GB SSD Quadro T500 4GB W
- Xiaomi Redmi 13 128GB,Újszerű,Adatkabel,12 hónap garanciával
- Corsair VENGEANCE Pro 32GB (4x8GB) DDR4 2800MHz
- Apple iPhone 17 Pro Max 512GB / 36 hónap jótállással!
- Xiaomi 14T /12/256GB / Kártyafüggetlen / 12Hó Garancia
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest
Cég: Central PC számítógép és laptop szerviz - Pécs
Város: Pécs


