Android, ¿puedo poner AsyncTask en una clase separada y tener una devolución de llamada?

Estoy aprendiendo sobre AsyncTask y quiero usarlo como una clase separada, en lugar de una subclase.

Por ejemplo,

class inetloader extends AsyncTask<String, Void, String> { @Override protected String doInBackground(String... urls) { String response = ""; DefaultHttpClient client = new DefaultHttpClient(); HttpGet httpGet = new HttpGet(urls[0]); try { HttpResponse execute = client.execute(httpGet); InputStream content = execute.getEntity().getContent(); BufferedReader buffer = new BufferedReader( new InputStreamReader(content)); String s = ""; while ((s = buffer.readLine()) != null) { response += s; } } catch (Exception e) { e.printStackTrace(); } return response; } @Override protected void onPostExecute(String result) { Log.e("xx",result); // how do I pass this result back to the thread, that created me? } } 

Y el hilo principal (ui):

 inetloader il = new inetloader(); il.execute("http://www.google.com"); //il.onResult() //{ ///do something... //} 

¡Gracias!

Utilice una interfaz. Algo como:

 interface CallBackListener{ public void callback(); } 

A continuación, haga esto en su hilo de interfaz de usuario:

 inetloader il = new inetloader(); li.setListener(this); il.execute("http://www.google.com"); 

En inetloader, agregue:

  CallBackListener mListener; public void setListener(CallBackListener listener){ mListener = listener; } 

Entonces En postExecute (), hace:

  mListener.callback(); 

Puede pasar la instancia de actividad a la función de actividad de constructor y llamada desde allí …
Como interfaz de uso:

 public interface ResultUpdatable { public void setResult(Object obj); } 

Implementar esto en la actividad y pasar en el constructor de Async tarea y actualizar el resultado de onPostExecute utilizando la función setResult .

 inetloader il = new inetloader(); il.execute("http://www.google.com"); String result = il.get();//put it in try-catch ^^^^^^^^ 

here you get result which is in onPostExecute(String result)

  • Cómo crear sqlite declaración preparada en OrmLite?
  • AndroidAnnotations y Dagger
  • Android Fatal Signal 11
  • ¿Cómo hacer una devolución de llamada después de que la vista esté completamente renderizada?
  • ¿Cómo haces que dos aplicaciones de Android compartan el mismo ID de usuario?
  • Ningún nivel de cumplimiento del compilador Java 1.8 al ejecutar Android Bundle / Eclipse Juno en Oracle JDK 8
  • Java.lang.ClassNotFoundException en dalvik.system.BaseDexClassLoader.findClass
  • Android obtiene PID de otras aplicaciones
  • Android - Administrador de etiquetas de Google con Google Analytics y Firebase Analytics
  • ¿Cómo puedo adjuntar archivos de recursos de cadena diferentes durante las versiones de lanzamiento y depuración de hormigas android?
  • Opciones para la comunicación del servidor cliente en Android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.