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가 닫힌다. 문제가 어디에 있습니까? 고맙습니다!
하지만 finish() 호출 후에는 Activitiy의 onCreate 메서드를 호출해서는 안됩니다. – Alex
새 활동을 시작하면 해당 활동이 완료되면 새 활동의 onCreate가 호출됩니다. – Blackbelt
파괴하기 전에 finish() 메소드 후에 onCreate를 호출합니다. 왜 onDestroy가 아닌가? – Alex