Я прошу прощения за многословное название - я не был уверен, как это точно сформулировать. Я пытаюсь (в рамках моего метода onCreate ()):
-Инициализировать некоторые вещи
- отображать диалог прогресса, пока я загружаю некоторые данные из моего бэкэнда
- очистить диалоговое окно прогресса, а затем продолжить с кодом
Я понимаю, что типичным решением для диалога прогресса является асинхронная задача, которую я пытался использовать (см. Ниже). Однако это не блокирует выполнение кода, как я хочу. Код, который следует после lwpd.execute (), полагается на загрузку, которая уже произошла. Я слишком усложняю это? Как правильно делать то, что я хочу?
Для справки, моя реализация Asynctask:
public class LoadWithProgressDialog extends AsyncTask<Void, Void, Boolean>{
private ProgressDialog pd; //the progress dialog
private String title; //the title of the progress dialog
private String message; //the body of the progress dialog
private Runnable task; //contains the code we want to run in the background
private Context c;
public LoadWithProgressDialog(Context context,String t, String m,Runnable r){
super();
c = context;
task = r;
title = t;
message = m;
}
@Override
protected void onPreExecute(){
pd = ProgressDialog.show(c,title, message, false, false);
}
@Override
protected Boolean doInBackground(Void... params) {
task.run();
return true;
}
@Override
protected void onPostExecute(Boolean result) {
pd.dismiss();
}
}
и
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//initialize variables
LoadWithProgressDialog lwpd = new LoadWithProgressDialog(this,"Loading","Loading Truck Data", new Runnable() {
public void run(){
//code that loads things
}
});
lwpd.execute();
//continue on with my code
}