Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Displaying a progress dialog when upgrading database

The next version of my app needs to upgrade the database and this takes quite a bit of time. I'd like to show a progressDialog to update the user on the progress. Problem is, I can't quite figure out how and where to create the dialog.

My basic setup is that I have an activity which is essentially a splashscreen. It's on this screen I would like to show the progress. I have a separate DbAdapter.java file where a DatabaseHelper class extends SQLiteOpenHelper, where I override onUpgrade (the upgrade part is working fine).

I've tried a few different places to implement the progress dialog, but I don't seem to find the right spot. I tried passing context from my splashscreen activity to onUpgrade, but when onUpgrade runs it seems to be getting the context from my ContentProvider instead.

Does anyone have a good example of how to display a progress dialog when upgrading a database?

like image 880
Jens Zalzala Avatar asked Jan 01 '26 12:01

Jens Zalzala


1 Answers

You need to implement an AsyncTask. Example:

class YourAsyncTask extends AsyncTask<Void, Void, Void> {

    private ProgressDialog progressDialog;

    @Override
    protected void onPreExecute() {
        //show your dialog here
        progressDialog = ProgressDialog.show(this, "title", "message", true, false)
    }

    @Override
    protected Void doInBackground(Void... params) {        
        //update your DB - it will run in a different thread
        return null;
    }

    @Override
    protected void onPostExecute(Void result) {
        //hide your dialog here
        progressDialog.dismiss();
    }
}

Then you just have to call

new YourAsyncTask().execute();

You can read more about AsyncTask here: http://developer.android.com/reference/android/os/AsyncTask.html

like image 56
pandre Avatar answered Jan 03 '26 00:01

pandre



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!