2012-01-28 44 views
5

He siguiente código:¿Por qué esta actividad no termina?

mQuestions=DictionaryDbWrapper.getInstance().getQuestionsSequence(
      this.getIntent().getStringExtra(ApplicationUtilities.TEST_CATEGORY_PARAMETER), 50); 
    mQuestionsCount=mQuestions.size(); 
    Log.e("count", String.valueOf(mQuestionsCount)); 
    if (mQuestionsCount==0) { 
     Log.e("1", "111"); 
     Toast.makeText(this, "В данной категории нет слов", Toast.LENGTH_LONG).show(); 
     this.finish(); 
    } 

    makeQuestion(); 

mQuestions es ArrayList vacío, y veo que count es igual a 0 en el registro de siempre. También veo 1/111 registrar en mi registro siempre también. ¡Pero mi actividad no hace un finaliza el método!

makeQuestion es un método que no necesita trabajar con mQuestion vacío (throw Exception). ¡Pero si hago un comentario para makeQuestion entonces el método finish funciona bien! El método para este código funciona en el hilo principal (se ejecuta desde el método onCreate()).

Por favor, sugiera dónde me estoy equivocando.

Gracias de antemano.

Respuesta

4

La función finish() no es bloqueante, esto significa que la ejecución continuará mientras la actividad termine en segundo plano.

Para resolver su problema, agregue una declaración de devolución después de la llamada a finish().

1

Estoy bastante seguro de que llamar al finish() no tiene el efecto de bloqueo similar al llamar al return.

Según su código, supondrá que finish() tendrá el mismo efecto de bloqueo de return.

Prueba esto:

mQuestions=DictionaryDbWrapper.getInstance().getQuestionsSequence(
     this.getIntent().getStringExtra(ApplicationUtilities.TEST_CATEGORY_PARAMETER), 50); 
mQuestionsCount=mQuestions.size(); 
Log.e("count", String.valueOf(mQuestionsCount)); 
if (mQuestionsCount==0) { 
    Log.e("1", "111"); 
    Toast.makeText(this, "В данной категории нет слов", Toast.LENGTH_LONG).show(); 
    this.finish(); 
} 
else { 
    makeQuestion(); 
} 
Cuestiones relacionadas