2012-07-14 1 views
1

ProgressDialog가 포함 된 MyProgressDialog라는 Activity가 있습니다. 이 ScreenProgressDialog 활동은 의도에 의해 주 활동이라고 : 여기 finish()를 호출 한 후 안드로이드 활동이 중단되지 않는 이유는 무엇입니까?

 if(msg.what == SET_PROGRESS){ 

      intent.putExtra("action", "set"); 
      ... 

      intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 

      startActivity(intent); 
     } 
     else if(msg.what == SHOW_PROGRESS){    


      intent.putExtra("action", "show"); 
      ... 

      intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP | Intent.FLAG_ACTIVITY_NEW_TASK); 

      startActivity(intent);    
     } 
     else if(msg.what == HIDE_PROGRESS){ 

      intent.putExtra("action", "hide"); 

      intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 

      startActivity(intent); 

     } 

가 MyProgressDialog 활동이다 :

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    Log.e("screenPD", "spd created"); 

    extras = getIntent().getExtras(); 



    pd = new ProgressDialog(this); 

    ...setting the pd...   

    pd.show(); 

    Log.e("screenPD", "spd shown"); 
} 

@Override 
protected void onNewIntent(Intent intent) { 
    super.onNewIntent(intent); 

    setIntent(intent); 

    int newTitle = intent.getExtras().getInt("title"); 

    if (intent.getExtras().getString("action").equals("set")){ 
     pd.set methods... 
     pd.show(); 

     Log.e("DialogSET", "DialogSET "+intent.getExtras().getInt("progress")); 
    } 
    else if (intent.getExtras().getString("action").equals("show")){ 
     pd.set methods... 
     pd.show(); 

     Log.e("DialogSHOW", "DialogSHOW "+progress); 

    } 
    else if (intent.getExtras().getString("action").equals("hide")){ 
     pd.dismiss(); 
     this.finish(); 
     Log.e("DialogHIDE", "DialogHIDE"); 
     return; 
    } 
} 

@Override 
public void onDestroy() { 
    super.onDestroy(); 
    Log.e("screenPD", "destroyed");  
} 

그리고 여기에 로그 캣입니다 :

DialogHIDE(2615): DialogHIDE 
screenPD(2615): spd created 
screenPD(2615): spd shown 
screenPD(2615): destroyed 

그래서 제 3 의도 시작 , finish()를 호출합니다. 반환; 새 ProgressDialog를 표시하는 Onreate 메서드가 시작됩니다. onDestroy가 호출되었지만 ProgressDialog가 화면에서 숨기지 않습니다. finish() 메소드 후에 shold가 닫힌다. 문제가 어디에 있습니까? 고맙습니다!

답변

0

오류는 없습니다. finish()을 호출하는 메소드가 완료 될 때까지 완료되고 제어가 완료되면 제어는 Android으로 복귀합니다.

+0

하지만 finish() 호출 후에는 Activitiy의 onCreate 메서드를 호출해서는 안됩니다. – Alex

+0

새 활동을 시작하면 해당 활동이 완료되면 새 활동의 onCreate가 호출됩니다. – Blackbelt

+1

파괴하기 전에 finish() 메소드 후에 onCreate를 호출합니다. 왜 onDestroy가 아닌가? – Alex

0

startactivity 메소드 후에 finish()를 호출하여 현재 활동을 완료합니다. 이전 활동을 끝내는 새로운 활동을 시작하십시오.

관련 문제