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!

3 Solutions collect form web for “Android, ¿puedo poner AsyncTask en una clase separada y tener una devolución de llamada?”

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)

  • Android Support Annotation "debería tener @Retention (RetentionPolicy.SOURCE)"
  • La alineación vertical del texto del botón está desactivada en Android
  • Google API para Google Docs, solicitando una lista de documentos - 400 Solicitud incorrecta
  • Contexto nulo Puntero
  • Dentro del proyecto Android de Eclipse se ejecutan clases Java con main (String args) como Java Application hace que "Layout inválido de java.lang.String en value"
  • ListView Actualización de una sola fila
  • GetOutputMediaFile (int) no está definido para el tipo nuevo Error de Camera.PictureCallback () {} me confunde
  • Crear componente personalizado basado en LinearLayout, declarando el diseño en XML
  • Al hacer clic en la notificación no se abre la actividad mencionada
  • Android en el cambio de enfoque
  • Desactivar ventanas emergentes y alarmboxes en la vista web de android
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.