Simple hilo bloquea la aplicación para Android
He encontrado un problema muy peculiar al crear un lanzamiento de un hilo dentro de una aplicación de Android.
Si tengo el siguiente subproceso de clase:
- ¿Puede alguien explicar por favor cómo startActivity (intención) y startActivityForResult (intención) son asíncronos?
- Java.lang.Thread.setPriority vs android.os.Process.setThreadPriority
- ¿Cómo evito esta espera ocupada?
- OnSaveInstanceState / onPause - espera hasta que el estado se salve por completo antes de permitir que se procese el proceso
- Cómo "esperar" un hilo en Android
public class TroubleThread extends Thread{ boolean running; public boolean isRunning() { return running; } public void setRunning(boolean running) { this.running = running; } @Override public void run() { while (isRunning()){ }//end while }//end run }
Y agregarlo en algún lugar en el método onCreate de la actividad (…) como:
public class MyActivity extends Activity { TroubleThread myThread; @Override public void onCreate(Bundle savedInstanceState) { //.... myThread = new TroubleThread(); myThread.setRunning(true); myThread.start(); } }
La aplicación se bloqueará.
Pero si cambio el método run () a:
@Override public void run() { while (running){ //NOTE THE USE OF DIRECT FIELD ACCESS INSTEAD OF METHOD }//end while }//end run
Deja de estrellarse.
Incluso si solucioné mi problema usando bloqueos, notify () y wait () la pregunta sigue siendo:
¿Por qué cuando se utiliza el acceso directo al campo de la aplicación sigue funcionando mientras que al utilizar el método se bloquea?
- ¿Cuáles son las consecuencias si intentamos conectar un hilo nativo permanentemente a la DVM (JVM)?
- Obtener referencia a Thread Object desde su ID
- ¿Cómo funciona maximumPoolSize de ThreadPoolExecutor?
- Nuevo Runnable () pero no nuevo hilo?
- ANR keyDispatchingTimedOut
- ¿Cuál es la diferencia entre Handler, Runnable y Threads?
- Ejemplo de segmentación en Android
- ¿Hay una manera de pasar parámetros a un Runnable?
- ¿Debería usar los componentes de arquitectura de Google?
- El widget Android AppBarLayout siempre aparece en la parte superior