If you're timer ticks every 0.5 seconds and the http request takes 1 second, after a while your have dozens of http requests waiting in the queue and using memory.
Additionally your logic might be too complex. The timer has it's own thread, in that thread you ask to do some job on the UI thread, and that job consists in creating an AsyncTask??? In the end, it could be possible that all AsyncTask as running concurrently, and you have many HTTP concurrent requests.
Why don't you just make the HTTP request in the timer thread or the AsyncTask?
EDIT:
What you could do is starting the timer count each time the previous http request has finished. You could do this with a worker thread (instead of a timer) with an infinite loop (with some exit condition) that makes the request, and when it finishes it sleeps for 0.5 seconds. This way you ensure you always have one single http request at any time.