首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ProgressDialog出现得太晚,消失得太快

ProgressDialog出现得太晚,消失得太快
EN

Stack Overflow用户
提问于 2012-01-12 01:00:23
回答 3查看 2.6K关注 0票数 0

当我更新我的数据库时,我想要显示一个进度对话框。我的问题是ProgressDialog出现得太晚了,4-5秒后,很快就会出现和消失,它在屏幕上停留了几毫秒,你几乎看不到它,然后新的数据立即显示在列表中。这让我认为ProgressDialog正在等待数据库更新(这不会花费太多时间,大约4.5秒),然后它会显示在屏幕上,但很快就会消失。我希望ProgressDialog立即出现,我按下“更新”按钮,并停留在屏幕上约4-5秒。

代码语言:javascript
复制
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();

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-01-12 16:41:40

我已经用this answer of Vladimir Ivanov解决了这个问题。我已经通过外观分离了功能。我在doInBackground()中保留了功能(下载新数据),在onPostExecute()中更新了列表:获取名为setListAdaper()notifyDataSetChanged的新适配器。当然,我不再使用runOnUiThread()了。感谢所有人的提示。

票数 2
EN

Stack Overflow用户

发布于 2012-01-12 01:06:22

好的,我想这是

新的Runnable(

runOnUiThread(){

是导致这种行为的原因。

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

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

票数 6
EN

Stack Overflow用户

发布于 2012-01-12 01:08:42

您不能使用runOnUiThread。你基本上要做的是:

  1. 启动了新的非UI线程
  2. 从这个新的非UI线程中启动了一个长时间运行的任务到UI线程。
  3. 已从非ui线程退出。
  4. 您的UI线程现在执行长时间运行的操作(RefreshDataBase)并阻止UI。

您应该直接调用RefreshDataBase()。如果此方法触及UI,则必须对其进行重构。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8823365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档