开发者

Loading Dialog while rotating device

开发者 https://www.devze.com 2023-02-14 17:22 出处:网络
I have an activity with in which there is a async task that will do some download stuff. AT the time of downlaoding it will show a loading dialog.

I have an activity with in which there is a async task that will do some download stuff. AT the time of downlaoding it will show a loading dialog.

My problem is, it worked fine for me when me doing it in only one orentiaon. But when i rotate at the time of dow开发者_如何学Pythonnload, it shows window leaked and will crash at the dialog.cancel in my post excute.

From my study on it more i understood it due the change in the context when device is rotated.

That is when a device is rotated the activity will be recreated so the context will be changed.

But i have created the dialog with old one and that wasn't the current context. So when i cancel it it shows error

What is the solution for this, any idea frnds.

Me using honeycomb, me tried but with fragment but didnt get a good sample for that. Me now mainly trying that,

if anyone can give me some links for that it will be great


First of all: open your dialog using the showDialog method (there are a lot of examples in the official documentation). If you do so, the activity will take care of dismissing the dialog on destroy, and re-showing it after the activity has been recreated.

Also... if the dialog shows a progress bar (not a wheel), you will want to update the progress of the dialog after orientation changes. In order to do so, I recommend to use the onRetainNonConfigurationInstance to return the current state of the dialog and/or the activity itself. Then, you can use getLastNonConfigurationInstance to recover that state. Google about those two methods if you want to see examples.

Another thing to keep in mind: if you are updating the state of the dialog an/or any other UI element from the AsyncTask, you must be aware that after the activity is recreated, the AsyncTask may be pointing to the wrong UI references. In order to handle this, you can create a proxy class (Proxy design pattern) to detach the AsyncTask progress notifications from the current UI elements.

0

精彩评论

暂无评论...
验证码 换一张
取 消