ProgressDialog显得太晚,消失得太快

Ale*_*dro 0 android progressdialog android-asynctask

当我更新我的数据库时,我想显示一个进度对话框.我的问题是ProgressDialog出现迟到了,在4-5秒之后,然后出现并且消失的速度非常快,它在屏幕上几毫秒几乎看不到它,然后立即在列表中显示新数据.这让我觉得ProgressDialog正在等待数据库更新(它不需要花费太多,大约4.5秒)然后它会在屏幕上显示但是很快就会消失.我想立即显示ProgressDialog我按下"更新"按钮并在屏幕上停留4-5秒.

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();
        }

    }
Run Code Online (Sandbox Code Playgroud)

我打电话的时候 new MyAsyncTask().execute();

Gra*_*ith 6

好的,我认为这个

runOnUiThread(new Runnable(){

导致这种行为.

doInBackground()在新的线程中执行代码到主UI线程.然后,您将在此线程中执行的代码放回到主线程中,导致进度对话框在结束时被延迟,然后在postExecute()中立即关闭.

可以在这里找到一个好的asyntask教程.