Acceder

Ver la Versión Completa : [ SOLUCIONADO ] ¿No hay que limpiar ni reutilizar los runnables?


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

kriogeN
15/01/16, 13:14:16
No tiene sentido porque son asíncronos, y por tanto no puedes saber donde establecerlos a null o limpiarlos. Para una cosa buena que tiene Java que es su recolector de basura déjalo que trabaje.

elamas
15/01/16, 22:19:59
Genial, una preocupación menos.

Gracias kriogeN

Dexafree
16/01/16, 14:43:01
Marcamos como Solucionado :ok: