मेरे पास एक गतिविधि है जो 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 ) और एंड्रॉइड स्रोतों में देखा, यह ऐसा करने के लिए केवल संभावित स्थिति जैसा दिखता है अपवाद तब था जब गतिविधि नष्ट हो गई थी। लेकिन जैसा कि मैंने उल्लेख किया है, मैं बुनियादी घटनाओं के लिए गतिविधि मनोरंजन को मना करता हूं।
तो किसी भी सुझाव बहुत सराहना की है।