Java: Subclase AsyncTask

Estoy intentando subclase la clase de android.os.AsyncTask genéricamente. Básicamente, sólo quiero añadir una propiedad a la misma. La cosa es, todavía quiero ser capaz de usarlo como una clase anónima.

import android.content.Context; import android.os.AsyncTask; public class KAsyncTask extends AsyncTask<Params, Progress, Result> { public Context c; } 

He intentado subclasificar, pero no puedo envolverlo alrededor de mi cabeza cómo se supone que debo hacer esto.

Recuerdos, EZFrag

¿Quieres decir que todavía quieres que sea una clase de plantilla abstracta como AsyncTask? La declaración sería:

 public abstract class KAsyncTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> { public Context c; } 

Gracias Reuben, funciona 100% como se esperaba.

Esto es lo que tengo ahora:

  import android.content.Context; import android.os.AsyncTask; public abstract class KAsyncTask<Params, Progress, Result> extends AsyncTask<Params, Progress, Result> { public Context context; public KAsyncTask<Params, Progress, Result> setContext(Context c){ this.context = c; return this; } } 

Y así es como lo uso:

  new KAsyncTask<Void, Void, Void>() { @Override protected void onPreExecute() { // TODO Auto-generated method stub Toast.makeText(context, "Connecting to Server...", Toast.LENGTH_LONG).show(); } @Override protected void onPostExecute(Void result) { // TODO Auto-generated method stub //super.onPostExecute(result); Toast.makeText(context, "Responce Recieved.", Toast.LENGTH_LONG).show(); } @Override protected Void doInBackground(Void... params) { // TODO Auto-generated method stub //Do webservice calls in here return null; } }.setContext(this).execute(); 

Necesitaba el contexto para mostrar mensajes al usuario de la tarea sí mismo.

Recuerdos, EZFrag

Si entiendo correctamente su pregunta, usted está buscando una forma de instanciar un AsyncTask interno anónimo que también tiene una variable de instancia. ¿Cómo planeas pasar ese valor adicional al AsyncTask ?

AFAIK, Java no le permite anular el constructor de una clase interna anónima. Así que su única esperanza es pasar en el Context como parte del tipo Params (que resulta ser un Varargs). Esto significa que usted tiene que hacer que el tipo Params como Context ; O utilizar una String y serialize / Parcel su Context como una String . Sinceramente siento que esto no vale la pena el esfuerzo y es demasiado de un hack.

¿Hay alguna razón por la que desee utilizar AsyncTask anónimo ? Solo sugeriría que creas una implementación con nombre de AsyncTask .

  • Rendimiento JPG vs WebP en Android
  • Un método más eficiente de dibujar miles de partículas (Java / Android)
  • "Los animadores sólo se pueden ejecutar en subprocesos Looper" durante las pruebas de instrumentación en dispositivo
  • ¿Qué archivos de java android no debo subir a mi servidor SVN?
  • Cómo guardar la superposición con vista previa de la cámara en android?
  • Herramientas para creaciones rápidas de diseño / interfaz?
  • Java se inició pero devolvió exit code = 13 eclipse
  • ¿Es esta una buena técnica (Uso de titular de datos) para eliminar la clase anónima, para reducir el riesgo de pérdida de memoria
  • Convertir json a objeto Map.Entry con Gson
  • ¿Dónde está la salida de una prueba instrumentada con Android?
  • Error de sintaxis: Insertar "}" para completar el bloque
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.