대화 상자를 표시하는 AsyncTask가 있습니다. 장치를 돌릴 때이 부분이 사라지지 않게하고 싶습니다.AsyncTask 및 대화 상자는 장치 회전에서 생존합니다.
내 솔루션은 Activity가 죽을 때 죽지 않는다는 것을 Application 클래스에 저장하는 것입니다. 액티비티가 종료되면 단순히 대화 상자를 닫습니다. 다시 시작하면 대화 상자가 표시됩니다.
이것이 작동하는 것 같습니다. 장치가 회전하면 대화 상자가 사라지고 새 작업으로 다시 나타납니다. 유일한 문제는 회전 후에 Dialog가 더 이상 움직이지 않는다는 것입니다. 원래의 방향으로 다시 회전하면 정지 된 지점에서부터 애니메이션이 계속 진행됩니다.
왜 이런 일이 발생합니까? 이 문제를 어떻게 해결할 수 있습니까? 캐톨
public class OrientationActivity extends Activity {
MyApplication application;
public class LongOperation extends AsyncTask<String, Void, String> {
private ProgressDialog dialog;
public LongOperation(Context context) {
dialog = new ProgressDialog(context);
dialog.setCanceledOnTouchOutside(false);
}
@Override
protected void onPreExecute() {
this.dialog.setMessage("Busy!");
this.dialog.show();
}
@Override
protected String doInBackground(String... params) {
while(true){
}
}
@Override
protected void onPostExecute(String result) {
if(dialog != null && dialog.isShowing())
dialog.dismiss();
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
application = (MyApplication) getApplication();
if(application.longOperation == null) {
application.longOperation = new LongOperation(this);
application.longOperation.execute();
}
}
@Override
public void onPause() {
super.onPause();
application.longOperation.dialog.dismiss();
}
@Override
public void onResume() {
super.onResume();
application.longOperation.dialog.show();
}
}
public class MyApplication extends Application
{
LongOperation longOperation = null;
}
[Android에서 화면 회전시 대화 삭제 방지] (http://stackoverflow.com/questions/7557265/prevent-dialog-dismissal-on-screen-rotation-in-android) –