Pongo aquí minimizado mi código. No quiero poner el código entero de las 2 clases que menciono, porque estoy seguro que les dará flojera leerlo, y porque me parece que no hace falta ponerlo aquí para entender mi problema.
En los comentarios hallados dentro de este código, explico todo, incluyendo mi duda.
Código Java:
Ver original
public class MainActivity extends AppCompatActivity { public static int MI_VARIABLE; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); // A esta altura, el log indica que la variable MI_VARIABLE es igual a 0 (cero). Todo bien aquí. Log.println(Log.INFO, "infor", "MI_VARIABLE: "+MI_VARIABLE); // Instancio e inicio un primer hilo llamado "hilo1" de una clase llamada "MiClase". La clase "MiClase" importa MI_VARIABLE así: import static com.example.miproyecto.MainActivity.MI_VARIABLE, y luego asigna el valor correspondiente a MI_VARIABLE (digamos 7). Todo bien hasta aquí. MiClase hilo1 = new MiClase(params1); hilo1.setName("Hilo1"); hilo1.start(); // Instancio e inicio un segundo hilo llamado "hilo2" de la misma clase "MiClase". Gracias al parámetro que le paso al constructor de "MiClase", este hilo2 sólo se ejecuta hasta que termine/muera el hilo1; por lo cual, cuando por fin se ejecuta el hilo2, MI_VARIABLE ya es mayor a 0 (cero). Todo bien hasta aquí. params2.add(hilo1); MiClase hilo2 = new MiClase(params2); hilo2.setName("Hilo2"); hilo2.start(); // El problema está aquí: la condición del WHILE siempre se cumple, por lo cual la consola imprime indefinidamente: "MI_VARIABLE es igual a 0". ¿Por qué pasa esto si casi inmediatamente después de iniciada la app, MI_VARIABLE ya es mayor a 0? ¿Por qué el WHILE nunca se entera de que esto es así? ¿Qué puedo hacer para que el MainActivity.java haga algo en caso que MI_VARIABLE siga o no siga siendo igual a 0? while(MI_VARIABLE==0) { Log.println(Log.INFO, "infor", "MI_VARIABLE es igual a 0"); } } }
Saludos!