안녕하세요.
현재 AsyncTask를 이용하여 ProgressDialog를 띄워주고
그 PostExecute 콜백에서 두 가지의 AsyncTask를 리턴받고 Dialog를 종료시키고
액티비티를 전환하는 작업을 진행하려 하고 있습니다.
아래는 버튼을 클릭했을 때의 코드입니다.
SavingProgressTask saveTask = new SavingProgressTask(SettingActivity.this);
saveTask.execute();
아래는 액티비티 내의 inner class로 만든 AsyncTask 클래스입니다.
public class SavingProgressTask extends AsyncTask<Void, Void, Void> {
private Context mContext;
private ProgressDialog progDialog = null;
public SavingProgressTask(Context context) {
mContext = context;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
progDialog = new ProgressDialog(mContext);
progDialog.setMessage("저장중입니다.");
progDialog.setIndeterminate(false);
progDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
progDialog.setCancelable(false);
progDialog.show();
}
@Override
protected Void doInBackground(Void... params) {
return null;
}
@Override
protected void onPostExecute(Void aVoid) {
super.onPostExecute(aVoid);
// 상점변경을 했으면
if(isUpdateStore) {
try {
// 서버에 상점변경을 요청한다
int responseMessage = new StoreUpdateTask(SettingActivity.this).execute(fc_code).get();
if(responseMessage == 1) {
// mAuthUser 를 업데이트 하고
Store updateStore = new StoreDetailTask(SettingActivity.this, false).execute(fc_code).get();
mAuthUser.setStore(updateStore);
// SharedPreference 도 업데이트를 한다
UserAuthUtil.saveUserObject(SettingActivity.this, mAuthUser);
}
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
// 생년월일 혹은 성별을 변경했으면
if(isUpdateBirthday || isUpdateSex) {
// 서버에 유저정보변경을 요청한다
// mAuthUser 를 업데이트 하고
// SharedPreference 도 업데이트를 한다
}
if(progDialog != null) {
progDialog.dismiss();
Intent intent = new Intent(mContext, HomeActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
mContext.startActivity(intent);
}
}
}
현 상황에서 문제점이 무엇인가요...?
다이얼로그는 생성되지 않고 PostExecute 안의 두 개의 AsyncTask는 정상적으로 동작하며
액티비티 전환도 됩니다..
다이얼로그를 띄우는데 어떤 문제점이 있는건가요??