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.
- Zoom automático en Google Maps en java? (Dependiendo de la resolución de pantalla de Android)
- No se puede reducir la ráfaga con proguard
- Añadiendo el proyecto android a git
- Eclipse dice que mis proyectos Android contienen errores, pero no hay
- Obtener el título de la página web de setWebViewClient?
Recuerdos, EZFrag
- WiFi Direct en Android no funciona correctamente
- Diseño del cajón de navegación el título en la barra de herramientas no cambia
- No es un error de clase incluido Android Studio
- Diferencia entre DeadObjectException y causar una excepción NullPointerException
- Definir peculiaridad para WebView
- Utilizando acelerómetro, giroscopio y brújula para calcular el movimiento del dispositivo en el mundo 3D
- Convertir milisegundos a TDateTime en Java
- ¿Qué hace MessageDigest.update (byte )?
¿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
.
- Botón de desactivación con Android de fondo personalizado
- Rotación de mapa de bits en la lona de Android