station rc1 precio pedal mercadolibre looping loop boss java android multithreading

java - precio - loop station rc1



java.lang.RuntimeException: solo se puede crear un Looper por subproceso (2)

java.lang.RuntimeException: solo se puede crear un Looper por subproceso

La excepción se produce porque usted (o el código principal de Android) ya ha llamado a Looper.prepare() para el subproceso de ejecución actual.

Lo siguiente comprueba si ya existe un Looper para el subproceso actual, si no, crea uno, evitando así la RuntimeException .

public void run() { if (Looper.myLooper() == null) { Looper.prepare(); } thisHandler = new Handler(); .... }

Tengo un hilo simple que va así:

public class AwesomeRunnable extends Thread { Handler thisHandler = null; Handler uihandler = null; String update = null; long time = 0; public AwesomeRunnable(Handler h, long howLong) { uihandler = h; time = howLong; } public void run() { Looper.prepare(); thisHandler = new Handler(); ...

EDITAR: CÓDIGO AÑADIDO QUE COMIENZA LO FUNCIONABLE

public class StartCycle implements Runnable { @Override public void run() { pomodoroLeft = numPomodoro; while(pomodoroLeft > 0) { pomodoroLeft--; actualSeconds = 6 * ONE_SECOND; runnable = new AwesomeRunnable(myHandler, actualSeconds); runnable.start(); waitForClock();

Es una clase interna de una actividad principal. Este hilo , sin embargo, no se ejecuta en la actividad principal , sino dentro de otro hilo que se ejecuta en la actividad principal .

De todos modos, este ejemplo es exactamente el mismo que here , pero por alguna razón me da java.lang.RuntimeException: solo se puede crear un Looper por subproceso.

No creé ningún otro bucle, al menos explícitamente en cualquier lugar.


En lugar de simplemente llamar a Looper.prepare(); , primero verifique si Looper no existe para su Thread , si no es así, llame a esa función. Me gusta esto:

if (Looper.myLooper()==null) Looper.prepare();