use DetachableAsyncTask instead of AsyncTask