How to use WeakReference in Java and Android development?
android, java, weak-references
Solution
Using a `WeakReference` in Android isn't any different than using one in plain old Java.
You should think about using one whenever you need a reference to an object, but you don't want that reference to protect the object from the garbage collector. A classic example is a cache that you want to be garbage collected when memory usage gets too high (often implemented with `WeakHashMap`).
Be sure to check out `SoftReference` and `PhantomReference` as well.
EDIT: Tom has raised some concerns over implementing a cache with `WeakHashMap`. Here is an article laying out the problems: WeakHashMap is not a cache!
Tom is right that there have been complaints about poor Netbeans performance due to `WeakHashMap` caching.
I still think it would be a good learning experience to implement a cache with `WeakHashMap` and then compare it against your own hand-rolled cache implemented with `SoftReference`. In the real world, you probably wouldn't use either of these solutions, since it makes more sense to use a 3rd party library like Apache JCS.
Problem
I have been a Java developer for 2 years. But I have never written a WeakReference in my code. How to use WeakReference to make my application more efficient, especially the Android application?