elamas
15/01/16, 11:07:08
Hola,
veo en casi todos los ejemplos, como por ejemplo en esta página
http://developer.android.com/intl/es/guide/components/processes-and-threads.html#WorkerThreads
que se hacen cosas como ésta:
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
Bitmap b = loadImageFromNetwork("http://example.com/image.png");
mImageView.setImageBitmap(b);
}
}).start();
}
Mi pregunta es ¿si se da mil veces al botón se crean mill runables? ¿No hay que preocuparse y tratar de crear uno único y que se reutilice? ¿No hace falta tampoco ponerlo a null cuando se termine la ejecución?
Lo mismo veo con los AsyncTask. Por ejemplo en la misma página de antes
http://developer.android.com/intl/es/guide/components/processes-and-threads.html
hacen esto
public void onClick(View v) {
new DownloadImageTask().execute("http://example.com/image.png");
}
En este caso comprobé que los AsyncTask no son reutilizables, cuando traté de hacerlo me dió este error.
Caused by: java.lang.IllegalStateException: Cannot execute task: the task has already been executed (a task can be executed only once)
Un saludo
veo en casi todos los ejemplos, como por ejemplo en esta página
http://developer.android.com/intl/es/guide/components/processes-and-threads.html#WorkerThreads
que se hacen cosas como ésta:
public void onClick(View v) {
new Thread(new Runnable() {
public void run() {
Bitmap b = loadImageFromNetwork("http://example.com/image.png");
mImageView.setImageBitmap(b);
}
}).start();
}
Mi pregunta es ¿si se da mil veces al botón se crean mill runables? ¿No hay que preocuparse y tratar de crear uno único y que se reutilice? ¿No hace falta tampoco ponerlo a null cuando se termine la ejecución?
Lo mismo veo con los AsyncTask. Por ejemplo en la misma página de antes
http://developer.android.com/intl/es/guide/components/processes-and-threads.html
hacen esto
public void onClick(View v) {
new DownloadImageTask().execute("http://example.com/image.png");
}
En este caso comprobé que los AsyncTask no son reutilizables, cuando traté de hacerlo me dió este error.
Caused by: java.lang.IllegalStateException: Cannot execute task: the task has already been executed (a task can be executed only once)
Un saludo