Добавить счетчик прогресса в приложение булево
В моем коде у меня есть логическое значение для установки информации в базу данных через предпочтения. Он работает нормально, но проблема в том, что теперь есть много информации для добавления в приложение, и я получаю черный экран, пока информация добавляется в sqlite (только во время установки). Как добавить индикатор выполнения, чтобы пользователи знали, что приложение находится в процессе установки. Боюсь, они подумают, что приложение сломалось, когда смотрят на черный экран.
/** Insert list into db once */
if (pref.getBoolean("isFirst", true)) {
readBLContactsfromAssetsXMLToDB("list.xml");
pref.edit().putBoolean("isFirst", false).commit();
}
addQuickActions();
}
1 ответ
Сначала вы можете использовать AsyncTask для выполнения процессов, которые занимают много времени. Если вы не знаете об этом, it allows to perform background operations and publish results on the UI thread without having to manipulate threads and/or handlers.
Но если вы настаиваете на том, чтобы не использовать это, то, поскольку вы блокируете поток пользовательского интерфейса, вы не можете одновременно показывать диалоговое окно и выполнять свои действия. Вы должны иметь фоновый поток для длительного процесса и показать диалог прогресса в потоке пользовательского интерфейса.
Есть много примеров 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();
}
}
}
Вы можете увидеть, Как отобразить диалоговое окно прогресса перед началом активности в Android?
Надеюсь это поможет.