Ok great, thanks.

I've adapted my code and added a static flag to my activity, just for
testing purposes..

This is my code now..

package net.gullycorp.gully;

import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.os.AsyncTask;
import android.os.Bundle;
import android.widget.Toast;

public class GullyActivity extends Activity {
    private final static int DIALOG_TASKING = 1;

    private static boolean mTaskComplete = false;

    ProgressDialog mLoadingDialog;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

                if (!mTaskComplete) {
                new Task().execute(); // fetch our stuff
        }
    }

    @Override
    protected Dialog onCreateDialog(int id) {
        switch (id) {
        case DIALOG_TASKING:
                mLoadingDialog = new ProgressDialog(this);
                mLoadingDialog.setMessage("Loading stuff..");
                mLoadingDialog.setCancelable(true);
                return mLoadingDialog;
        }
        return super.onCreateDialog(id);
    }


    private final class Task extends AsyncTask<Void, Void, Void> {

        protected void onPreExecute() {
                showDialog(DIALOG_TASKING);
        }


        protected Void doInBackground(Void... unused) {
                        for (int i = 0; i < 4000000; i++) { }; // just to take 
some time up
                        mTaskComplete = true;
                        return null;
                }

        protected void onPostExecute(Void unused) {
                        dismissDialog(DIALOG_TASKING);
                        Toast.makeText(GullyActivity.this, "Finished..",
Toast.LENGTH_SHORT).show();
                }

    }
}


This code (kinda) works, the only problem is dismissing the dialog if
the activity is recreated. I've tried dismissing it if mTaskComplete
is true but I guess by that time it's lost reference to the
ProgressDialog.

Thanks

On Nov 7, 2:14 pm, Mark Murphy <mmur...@commonsware.com> wrote:
> Lee Jarvis wrote:
>
>  > The code works fine, except when I try and change screen orientation,
>
> > the progress dialog doesn't disappear and the task seems to be
> > executed again, I realize this is because the onCreate() method is
> > being called again on orientation change perhaps?
>
> Yes. By default, on an orientation change, activities are destroyed and
> recreated.
>
> > What would be the best solution for this issue?
>
> I don't know about "best". Some options include:
>
> 1. A static flag or something that indicates whether your background
> task is running, so you only fire off the task in onCreate() if that
> flag is false.
>
> 2. Overriding the default orientation-handling code, so your activity is
> not destroyed and recreated:
>
> http://www.androidguys.com/2008/11/11/rotational-forces-part-three/
>
> 3. Finding some other way of handling your background work that does not
> require it to be invoked every time the activity starts up, if that's
> possible.
>
> --
> Mark Murphy (a Commons 
> Guy)http://commonsware.com|http://twitter.com/commonsguy
>
> _Android Programming Tutorials_ Version 1.0 In Print!

-- 
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

Reply via email to