我的应用程序的下一个版本需要升级数据库,这需要相当多的时间。我想显示一个progressDialog来更新用户的进度。问题是,我无法弄清楚如何以及在何处创建对话框。
我的基本设置是我有一个活动本质上是一个闪屏。我想在这个屏幕上显示进度。我有一个单独的DbAdapter.java文件,其中DatabaseHelper类扩展了SQLiteOpenHelper,我在其中覆盖onUpgrade(升级部分工作正常)。
我尝试了几个不同的地方来实现进度对话框,但我似乎找不到合适的位置。我尝试将上下文从我的splashscreen活动传递到onUpgrade,但是当onUpgrade运行时,它似乎从我的ContentProvider获取上下文。
有没有人在升级数据库时如何显示进度对话框?
答案 0 :(得分:3)
您需要实施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
答案 1 :(得分:0)
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();
}