¿Cómo paso un contexto a un AsyncTask?
Quiero preformar un Toast
cuando se completa una tarea en segundo plano, sólo para que el usuario sepa que ha terminado.
He hecho una nueva clase para mi asyncTask pero no puedo usar getApplicationContext()
dentro de esta clase.
- ¿Hay una función en Android análoga a "int main" en C / C ++ que contiene el bucle principal del programa?
- Cómo utilizar Runnable.wait () en AsyncTask? ¿Por qué el AsyncTask NO espera ...?
- ¿Por qué mostrar java.lang.ClassCastException: android.text.SpannableString no se puede transmitir a java.lang.String?
- Android Rest Client
- Error de compilación de Android: ro.build.fingerprint no puede exceder 91 bytes
Estoy utilizando task.execute(getTempFile(this), getApplicationContext());
Para ejecutar las tareas. GetTempFile devuelve un objeto File, e intentaba pasar el contexto como un objeto Context.
Mi clase de tarea tiene 3 variables AsyncTask<Object, Integer, Integer>
para que el contexto esté en el segundo objeto. Sin embargo, esto bloquea la aplicación.
Editar
public class LocationActivity extends Activity implements LocationListener { protected void handleImage(Bitmap thumbnail){ PushDataToServer task = new PushDataToServer(); task.execute(getTempFile(this), getApplicationContext()); } } public class PushDataToServer extends AsyncTask<Object, Integer, Integer> { Context context; @Override protected Integer doInBackground(Object... params) { // TODO Auto-generated method stub this.context = (Context) params[1]; File file = (File) params[0]; return null; } protected void onPostExecute(String result) { Toast toast = Toast.makeText(this.context, "All done!", Toast.LENGTH_SHORT); toast.show(); } }
- ¿Por qué no se llama a mi onPrepareOptionsMenu?
- Ajuste del tamaño de los botones en porcentaje
- ¿El compilador java optimizará una llamada de método a una variable estática final? ¿Y qué pasa cuando se convierte en código dalvik?
- Java JNI vs. Android NDK
- Carga pesada en el hilo que causa problemas de memoria
- Project.properties en el proyecto android
- Android GoogleAPIClient - NoClassDefFoundError: com / google / android / gms / interno / zzsa
- ¿Cómo puedo encontrar dónde se utiliza un método o una variable en Android Studio (acceso directo)
Pase un objeto Context
en el AsyncTask
del AsyncTask
.
Código de muestra:
public class MyTask extends AsyncTask<?, ? ,?> { private Context mContext; public MyTask(Context context) { mContext = context; } }
Y luego, cuando está construyendo su AsyncTask
:
MyTask task = new MyTask(this); task.execute(...);
Pasar en el constructor, no como un parámetro de método. Entonces usted no necesita depender de los parámetros genéricos.
Ejemplo completo: AsyncTask reutilizable
Usted dice que su contexto está en el segundo objeto, pero su segundo objeto es Integer. ¿Podría ser su problema? También – otra sugerencia es poner su clase AsyncTask como una clase interna privada a su actividad – de esa manera estoy bastante seguro de que tendrá acceso a getApplicationContext ().