Ver Mensaje Individual
  #5 (permalink)  
Antiguo 08/04/2020, 08:21
prueba230683
 
Fecha de Ingreso: abril-2011
Mensajes: 170
Antigüedad: 13 años, 7 meses
Puntos: 68
Respuesta: ¿Por qué MainActivity nunca se entera que mi variable fue alterada en un t

Crea una clase aparte que contenga la propiedad que quieres manipular entre varios hilos:

Código Java:
Ver original
  1. public class Objeto {
  2.     public volatile int MI_VARIABLE;
  3. }

Y en tu código pasas una instancia de dicho objeto (con el valor de obj.MI_VARIABLE que quieras):

Código Java:
Ver original
  1. public class MainActivity extends AppCompatActivity {
  2.  
  3.     @Override
  4.     protected void onCreate(Bundle savedInstanceState) {
  5.         super.onCreate(savedInstanceState);
  6.         setContentView(R.layout.activity_main);
  7.        
  8.         Objeto obj = new Objeto();
  9.         obj.MI_VARIABLE = 0; // inicialmente, la establecemos a 0
  10.  
  11.         Log.println(Log.INFO, "infor", "MI_VARIABLE: " + obj.MI_VARIABLE);
  12.  
  13.         List params1 = new ArrayList();
  14.         MiClase hilo1 = new MiClase(params1, obj); // pasamos el objeto
  15.         hilo1.setName("Hilo1");
  16.         hilo1.start();
  17.  
  18.         List params2 = new ArrayList();
  19.         params2.add(hilo1);
  20.         MiClase hilo2 = new MiClase(params2, obj); // pasamos el objeto
  21.         hilo2.setName("Hilo2");
  22.         hilo2.start();
  23.        
  24.         while(obj.MI_VARIABLE == 0) {
  25.             Log.println(Log.INFO, "infor", "MI_VARIABLE es igual a 0");
  26.         }
  27.     }
  28. }

Luego desde MiClase, en lugar de importar (import static com.example.miproyecto.MainActivity.MI_VARIABLE), directamente recibes el objeto y modificas la propiedad MI_VARIABLE de dicho objeto (obj.MI_VARIABLE = 123123).

Código Java:
Ver original
  1. public class MiClase {
  2.     public MiClase(List lista, Objeto obj){
  3.        // ...
  4.        obj.MI_VARIABLE = 123123; // esto se debería reflejar en todos los hilos
  5.        // ...
  6.     }
  7. }

Última edición por prueba230683; 08/04/2020 a las 08:59