データベースを更新しているうちに進行状況ダイアログを表示したい。私の問題は、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();
あなたはあなたが何をしているのかわからないようです...なぜあなたは 'doInBackground'で' runOnUiThread'を使用していますか?あなたのコードフローは次のようになります:私はuiスレッド(runOnUiThread)でジョブを実行する新しいスレッド(AsyncTask)を開始しています – Selvin
新しいMyAsyncTaskを呼び出す前にProgressDialog.show(...) ).execute()を呼び出し、元のコードの中で最終的な参照を(進行状況ダイアログに)保持しますか? – bgs