AsyncTask를 시작하고 작업 기간 동안 진행률 대화 상자를 표시하는 활동이 있습니다. 액티비티는 회전 또는 키보드 슬라이드로 다시 생성되지 않는다고 선언됩니다.
<activity android:name=".MyActivity"
android:label="@string/app_name"
android:configChanges="keyboardHidden|orientation"
>
<intent-filter>
</intent-filter>
</activity>
작업이 완료되면 대화 상자가 닫히지 만 일부 전화 (프레임 워크 : 1.5, 1.6)에서는 이러한 오류가 발생합니다.
java.lang.IllegalArgumentException: View not attached to window manager
at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:356)
at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:201)
at android.view.Window$LocalWindowManager.removeView(Window.java:400)
at android.app.Dialog.dismissDialog(Dialog.java:268)
at android.app.Dialog.access$000(Dialog.java:69)
at android.app.Dialog$1.run(Dialog.java:103)
at android.app.Dialog.dismiss(Dialog.java:252)
at xxx.onPostExecute(xxx$1.java:xxx)
내 코드는 다음과 같습니다
final Dialog dialog = new AlertDialog.Builder(context)
.setTitle("Processing...")
.setCancelable(true)
.create();
final AsyncTask<MyParams, Object, MyResult> task = new AsyncTask<MyParams, Object, MyResult>() {
@Override
protected MyResult doInBackground(MyParams... params) {
// Long operation goes here
}
@Override
protected void onPostExecute(MyResult result) {
dialog.dismiss();
onCompletion(result);
}
};
task.execute(...);
dialog.setOnCancelListener(new OnCancelListener() {
@Override
public void onCancel(DialogInterface arg0) {
task.cancel(false);
}
});
dialog.show();
내가 읽은 것 ( http://bend-ing.blogspot.com/2008/11/properly-handle-progress-dialog-in.html )에서 안드로이드 소스에서 본 것은 그것을 얻을 수있는 유일한 상황처럼 보입니다. 활동이 파괴 된 경우는 예외입니다. 그러나 내가 언급했듯이, 나는 기본 행사를위한 활동 레크리에이션을 금지합니다.
따라서 어떤 제안이라도 대단히 감사합니다.