2010-08-14 6 views
3

이 샘플 코드에서는 활동을 완료하라는 메시지가 표시되지만 이후에 계속 실행되고 메시지가 표시됩니다. 왜 이런 일이 일어나는지 이해하려고 노력하고 있습니다. 내가 생각할 수있는 유일한 수정은 마무리 후 '반환'을 배치하는 것입니다.활동 완료 메소드가 완료 될 때까지 대기합니까?

public void someMethod() { 
    if(valueIsTrue) { 
     startActivity(new Intent(this, NewActivity.class)); 
     CurrentActitivy.this.finish(); 

     // return; // if uncommented, Toast doesn't show 
    } 

    Toast.maketext(this, "Some message", Toast.LENGTH_SHORT).show(); 
} 

답변

3

정확합니다. finish()를 호출해도 즉시 작업이 완료되지 않습니다. 활동이 완료되기 전에 코드 경로의 도달 가능한 모든 명령문이 실행됩니다. 반환을 주석 처리를 제거하면 토스트는 실행 블록의 일부가 아닙니다.

+0

그런데 때때로 오랜 시간 동안 활동을 끝내지 못합니다 - 나는 활동이 사라지기 전에 내 앱에서 4-5 회의 '종료'버튼을 클릭하여 '종료'버튼을 만들었습니다. 아마도 작업 스레드가 관련되어있을 것입니다. 완료 전에 모든 작업 스레드를 중지하십시오. – Kostadin

관련 문제