问题描述
|
我正在使用ѭ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。它具有内置的通知机制并为您管理线程。