Пока я обновляю свою базу данных, я хочу отобразить диалог прогресса. Моя проблема заключается в том, что ProgressDialog опоздает, через 4-5 секунд, затем появляется и исчезает очень быстро, он остается на экране несколько миллисекунд, почти вы не можете его увидеть, а затем новые данные сразу отображаются в списке. Это заставляет меня думать, что ProgressDialog ждет обновления базы данных (она не занимает много, около 4,5 секунд), а затем она отображается на экране, но очень быстро отбрасывается. Я хотел бы, чтобы ProgressDialog появлялся сразу же, я нажимаю кнопку «Обновить» и остаюсь на экране около 4-5 секунд.ProgressDialog появляется слишком поздно и слишком быстро исчезает
class MyAsyncTask extends AsyncTask<Void, Void, Void>{
ProgressDialog myprogsdial;
@Override
protected void onPreExecute(){
myprogsdial = ProgressDialog.show(MyActivity.this, null, "Upgrade", true);
}
@Override
protected Void doInBackground(Void... params) {
// TODO Auto-generated method stub
runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
RefreshDataBase();
}
});
return null;
}
@Override
protected void onPostExecute(Void result){
myprogsdial.dismiss();
}
}
Когда я это называю, new MyAsyncTask().execute();
похоже, что вы понятия не имеете, что вы делаете ... почему вы используете 'runOnUiThread' в' doInBackground'? ... теперь ваш поток кода похож: я запускаю новый поток (AsyncTask), чтобы запустить задание обратно на поток ui (runOnUiThread) – Selvin
, что происходит, когда вы выполняете вызов ProgressDialog.show (...), прежде чем вы будете вызывать новый MyAsyncTask () .execute() и сохранить окончательную ссылку (в диалоговом окне прогресса) внутри исходного кода? – bgs