进度对话框导致应用程序不响应错误?

问题描述

| 我正在使用ѭ1中的ѭ0来显示我的上传进度,但是如果上传速度较慢并且条形移动需要一些时间,并且我的应用程序显示应用程序没有响应错误,即等待或强制关闭..bt,实际上我的工作正在进行,如果我选择等待应用程序运行文件。我该怎么做才能删除该应用程序未响应的错误,或者我可以增加直到显示它的时间如此之快的时间? 在
doInBackground
方法
.
.
.
.
.
.


    int i;          
                    byte[] buf = new byte[512];

                    while ((i = in.read(buf)) != -1) {                  
                        out.write(buf,i);
                        publishProgress(in.available());
                        System.out.println(i);
                    }
并更新进度升级方法
protected void onProgressUpdate(Integer... values) {
            // Todo Auto-generated method stub
            super.onProgressUpdate(values); 
            if(a==0){
                progressDialog.show();
            }
            a++;
            int b=(int) (fil.length()-values[0]);           
            progressDialog.setProgress(b);

        }
    

解决方法

        我认为获得ANR的原因是您正在UI线程上执行长时间运行的任务。如果将阻塞的内容移到另一个线程上并通知UI线程进度更新,则可能会发现ANR消失了。抱歉,如果您长期运行的任务已经在后台(无法从您的代码中分辨出来) 您可以尝试使用AsyncTask。它具有内置的通知机制并为您管理线程。