tasks without using neither directly nor Handlers Threads, trying these elements in a fully transparent way to the programmer. When we define a AsyncTask class must define the type of three elements, the input parameters, its progress and outcome. Override onPreExecute(),doInBackground(),onPostExecute(),onProgressUpdate() class RequestTask extends AsyncTask<String, String, String>{ @Override protected void onPreExecute() { } @Override protected void onProgressUpdate(Integer... values) { } @Override protected String doInBackground(String... uri) { } @Override protected void onPostExecute(String result) { super.onPostExecute(result); } new RequestTask().execute(url);