I have read your question since a few days. Given that nobody else has something to say, you can guess that your code is quite good.
I do not develop on Android so I cannot say anything about your concern of the way the callback method has to be called specifically on the ui thread. However I can give you some hints on your code:
Be coherent and use ...
Thanks for clarifying the requirements, let's say they are:
First call to GetDraws, no cached dates, has internet, download dates into cache, return date.
First call to GetDraws, no cached dates, no internet, indicate error.
First call to GetDraws, cached dates, download and store new cache of dates,
Let's go with that. You mention "...