Отображение диалогового окна прогресса при обновлении базы данных - PullRequest
3 голосов
/ 09 июня 2011

Следующая версия моего приложения нуждается в обновлении базы данных, и это занимает довольно много времени. Я хотел бы показать progressDialog, чтобы обновить пользователя о прогрессе. Проблема в том, что я не могу понять, как и где создать диалог.

Моя основная настройка заключается в том, что у меня есть действие, которое по сути является заставкой. Именно на этом экране я бы хотел показать прогресс. У меня есть отдельный файл DbAdapter.java, где класс DatabaseHelper расширяет SQLiteOpenHelper, где я переопределяю onUpgrade (часть обновления работает нормально).

Я пробовал несколько разных мест для реализации диалога прогресса, но я, похоже, не нашел нужного места. Я попытался передать контекст от своей активности заставки на onUpgrade, но при запуске onUpgrade, кажется, вместо этого получает контекст из моего ContentProvider.

У кого-нибудь есть хороший пример того, как отображать диалоговое окно прогресса при обновлении базы данных?

Ответы [ 2 ]

3 голосов
/ 09 июня 2011

Вам необходимо реализовать AsyncTask. Пример:

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();
    }
}

Тогда вам просто нужно позвонить

new YourAsyncTask().execute();

Подробнее об AsyncTask можно прочитать здесь: http://developer.android.com/reference/android/os/AsyncTask.html

0 голосов
/ 09 июня 2011
ProgressDialog myProgressDialog = null;
public void DownloadFiles() {
        myProgressDialog = ProgressDialog.show(this, "Please wait !",
                "Updating...", true);
        new Thread() {
            public void run() {
                try {
                       //Your upgrade method !
                       YourUpdateFunction();
                } catch (Exception e) {
                    Log.v(TAG, "Error");
                }
                myProgressDialog.dismiss();
            }
        }.start();
    }
...