Use weak references for caching
Currently, the implementation of a least-recently-used entity cache relies on a fixed max size and trash size. The use of such a structure for caching introduces problems with existing strong references in other parts of the code, namely that the stored information will become out of date if the cache entry is replaced. Weak references should be used instead of the LruCache structure, as these will be cleaned up by the GC if no strong references to the data still exist.
Edit: Upon inspection, using an exclusively weak cache introduces problems with excessive garbage collection, leading to an overly small cache and an excessive amount of cache repopulation. A more ideal approach would be to combine a moderately sized LruCache with a weak reference cache. This would effectively force the weak reference cache to hold references to any entries that are still in the LruCache, and only entries that are both absent from the LruCache and have no external strong references will be eligible for GC.