在我的代码中,我有一个布尔值,可以通过首选项将信息安装到数据库中。它工作正常,但问题是现在有很多信息要添加到应用程序,当信息被添加到sqlite时我得到一个黑屏(仅在安装期间)。如何添加进度微调器,以便用户知道应用程序是否在安装过程中。我担心当他们盯着黑屏时他们会认为应用程序被破坏了。
/** Insert list into db once */
if (pref.getBoolean("isFirst", true)) {
readBLContactsfromAssetsXMLToDB("list.xml");
pref.edit().putBoolean("isFirst", false).commit();
}
addQuickActions();
}
答案 0 :(得分:1)
首先,您可以使用AsyncTask来执行需要很长时间的流程。如果您不了解,it allows to perform background operations and publish results on the UI thread without having to manipulate threads and/or handlers.
但是如果你坚持不使用它,那么既然你正在阻止UI线程,你就无法显示对话框并同时执行你的工作。您需要为冗长的进程设置后台线程,并在UI线程上显示进度对话框。
网上有很多AsyncTaks
的例子。仅供参考:
private class OuterClass extend Activity{
//....
@Override
public void onCreate(Bundle savedInstanceState) {
new performBackgroundTask ().execute();
}
//....
private class performBackgroundTask extends AsyncTask < Void, Void, Void >
{
private ProgressDialog dia;
// This method runs in UI thread before the background process starts.
@Override
protected void onPreExecute(){
// Show dialog
dia = new ProgressDialog(OuterClass.this);
dia.setMessage("Installing...");
dia.show();
}
@Override
protected Void doInBackground(Void... params) {
// Do all the stuff here ...
addQuickActions();
}
// Ececutes in UI thread after the long background process has finished
@Override
protected void onPostExecute(Void result){
// Dismiss dialog
dia.dismiss();
}
}
}
您可能会看到How to display progress dialog before starting an activity in Android?
希望这会有所帮助。