Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

226
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda