Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

228
Vistas
entrar en otra declaración debido a AsyncTask? ¿posiblemente?

Tengo dos clases, MainActivity y Tempo y sus códigos.

MainActity.java

 public class MainActivity extends AppCompatActivity { Tempo m_context; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); m_context = Tempo.getInstance(); } } public void button_clicked(View v){ if( m_context.connect("a1",1)){ setTitle("Yeah!"); }else { setTitle("No"); } }

y tempo.java

 public class Tempo{ public boolean isConnected=false; private static Tempo insta; private Tempo() { } public synchronized static Tempo getInstance() { if (insta == null) { insta = new Tempo(); } return insta; } public boolean connect(String a, int aa) { new DoTask().execute(a); return isConnected; } public class DoTask extends AsyncTask<String,Void,Boolean> { @Override protected Boolean doInBackground(String... params) { boolean result = true; try { //If I'm here everything is okay } catch (IOException e) { //If I'm here everything is !okay result = false; } return result; } @Override protected void onPostExecute(Boolean result) { isConnected = result; } } }

Aunque mi trabajo se realiza perfectamente dentro de Tempo, lo que significa que las variables booleanas en la clase Tempo "resultado" y "isConnected" deben ser verdaderas. Sin duda, se transformaron a True después de mi trabajo, pero el problema principal es usar esos vars, no puedo ingresar si bloque de MainActivity ... lo que cambiará mi título a "¡Sí!". Según yo, se debe a que AsyncTask lanzó una tarea en segundo plano, por lo que mis vars siguen siendo los mismos (falsos) durante un tiempo en particular.

Bueno, necesito AsyncTask para que la interfaz de usuario no se atasque.

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

onPostExecute se ejecuta en el subproceso de la interfaz de usuario. para que pueda actualizar la interfaz de usuario en este método en lugar de su MainActivity.

 public class Tempo{ Activity activity; public boolean isConnected=false; private static Tempo insta; private Tempo() { } public synchronized static Tempo getInstance() { if (insta == null) { insta = new Tempo(); } return insta; } public boolean connect(String a, int aa,Activity a) { this.activity= a; new DoTask().execute(a); return isConnected; } public class DoTask extends AsyncTask<String,Void,Boolean> { @Override protected Boolean doInBackground(String... params) { boolean result = true; try { //If I'm here everything is okay } catch (IOException e) { //If I'm here everything is !okay result = false; } return result; } @Override protected void onPostExecute(Boolean result) { if( result){ Activity.setTitle("Yeah!"); }else { Activity.setTitle("No"); } } } }

Entonces, como puede ver, paso la actividad como un parámetro y luego la uso para actualizar la interfaz de usuario en el método onPostExecute().

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda