avoid locking the inmemory DB when trying to decode a bitmap in the caller thread
use a thread safe bitmap cache
the Bitmap cache is an internal thing
only allow most of the time we don't want to decode in the UI thread
don't do heavy CPU/disk operations inside the data lock