Effective Java says:
A third common source of memory leaks is listeners and other callbacks. If you implement an API where clients register call
Here you may find a clear and practical explanation as well: Memory leaks in Android — identify, treat and avoid