Попробовав немного больше, я наконец нашел решение.Используйте AsyncTask
.
Я создал класс, который расширяет AsyncTask
.
public class GenerateDataToDisplay extends AsyncTask<String, Integer, Boolean> {
private Context context;
private SQLiteDatabase appDb;
public GenerateDataToDisplay(Context context, SQLiteDatabase appDb){
this.context = context;
this.appDb = appDb;
}
@Override
protected Boolean doInBackground(String[] results) {
return results.length > 0 && generateDataToDisplay(context, appDb, results[0]);
}
}
Затем выполните это AsyncTask
в диалоге вызова, как показано ниже:
new GenerateDataToDisplay(this, db)
{
@Override
public void onPostExecute(Boolean result) {
//Hide progress bar
progressBar.setVisibility(View.GONE);
//Display data
textView.setText("Got it!!!");
}
}.execute(inputKey);
В этой реализации диалоговое окно открывается немедленно, отображается индикатор выполнения, начинается загрузка данных (AsyncTask
).когда данные готовы, индикатор выполнения исчезает и данные отображаются.
Пока у меня все работает нормально.Не стесняйтесь комментировать, чтобы добавить другой ответ, если у вас есть лучшие предложения.