2 qq 32360535 qq_32360535 于 2016.01.23 17:09 提问

Android关于下载进度条更新问题

@Override
protected Bitmap doInBackground(String... params) {
Bitmap bitmap=null;
ByteArrayOutputStream outputStream=new ByteArrayOutputStream();
InputStream inputStream=null;
try {
HttpClient httpClient=new DefaultHttpClient();
HttpGet httpGet=new HttpGet(params[0]);
HttpResponse httpResponse=httpClient.execute(httpGet);
if (httpResponse.getStatusLine().getStatusCode()==200) {
inputStream=httpResponse.getEntity().getContent();
long file_length=httpResponse.getEntity().getContentLength();
int len=0;
byte[] data=new byte[1024];
int duqulength=0;

while((len=inputStream.read(data)) != -1){
duqulength +=len;
int values=(int) ((duqulength/file_length)*100);
publishProgress(values);
System.out.println(values);
outputStream.write(data, 0, len);
}
byte[] date1=outputStream.toByteArray();
bitmap=BitmapFactory.decodeByteArray(date1, 0, date1.length);
}
} catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally {
if (inputStream!=null) {
try {
inputStream.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
return bitmap;
}

}

这个是代码 为什么进度条不更新啊 就最后一下子变100

1个回答

91program
91program   Ds   Rxr 2016.01.23 17:20

用 HttpClient 下载,下载过程是不是应该放在线程中,否则主进程没有时间去刷新 UI 的。

91program
91program 回复xiaojiangren: 下载的过程,最好是另开线程。
2 年多之前 回复
qq_32360535
qq_32360535 回复91program: inbackground那边得另开线程吗
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
【Android TV端】RecyclewView中局部更新(实现item下载进度实时更新)
需求背景:Android中ListView或GridView或RecycleView中 下载时item中的进度条不断更新处理。 性能问题:TV端如果用notifyDatasetChanged()来刷新整个界面,下载刷新比较频繁的话,一量下载中的数量过多,性能极其低下,在TV端硬件盒子性能不佳的情况下,很容易引发ANR,会造成内存消耗和页面卡顿,出现焦点乱跑和操作无反应,用户体验极差。 解决思路
android 自动更新APP版本,并使用ProgressDialog显示进度
一、主要应用异步消息处理机制,在子线程进行版本检测和版本对比,如有新版本则开启新的线程去下载,并在progressDialog上显示下载进度,最后自动安装,这就是大概的实现思路。主要用到的知识就是网络请求和异步消息处理,以及文件读写。 二、代码如下 1、主活动 private UpdateAppManager manager; protected void onCreate(B
Android ListView 中更新 ProgressBar 进度完整demo
public class ProgressActivity extends Activity { private List mTasks = new ArrayList<>(); private ListView mListView; @Override protected void onCreate(@Nullable Bundle savedInstance
android 模拟listview多线程下载进度条显示不干扰
闲来没事写了个模拟下载进度条显示的demo,点击开始下载,然后进度逐渐增加。代码如下: TestActivity.java如下 package test.demo.com; import android.app.Activity; import android.os.Bundle; import android.view.View; import android.widget.ListV
App强制更新时,点击进行下载的逻辑,分为调用原生浏览器下载和自定义显示进度条下载两种
方法一:点击后跳转到调用原生浏览器下载Uri uri = Uri.parse(upDataUrl);//直接调用原生的浏览器进行下载的方法 Intent intent = new Intent(Intent.ACTION_VIEW, uri); startActivity(intent); getActivity().finish(); 方法二:自定义的显示进度条下载(不依赖App本身的网络请求框架
android下载时,通知栏进度条卡死问题
文章转自:http://blog.csdn.net/rev_fycd/article/details/8557158 因为本人记忆力衰退的快,需要做些笔记备忘,因此转载过来,谢谢原创! 项目中发现,连续发送同一个通知会导致应用越来越慢,最终卡死。 调试发现,如果每次都new一个新的RemoteViews就不会卡死,这是为什么? 跟踪进入android源码终于发现原因
Android 检查更新版本(带有通知栏,进度条,Notification)
Android 检查更新版本(带有通知栏,进度条,Notification)
app通知栏下载更新进度条卡顿处理
问题:发现更新app时候通知栏的处理下拉上滑过程会越来越卡,最终直接导致手机卡死。 解决: 第一种: 更新的时候不能把确实的数值传递给进度条更新,要先转为100份,然后目前占了几份再去更新,不然频繁调用通知栏的更新,会导致越来月卡顿,系统内部代码实现的。 while((readsize = is.read(buffer))!=-1){ fos.write(buffer, 0,
DownloadManager升级APK并且进度显示
Android sdk version 9以上就有DownloadManager 下面就是我如何使用DownloadManager package com.qq.beamzhang.mt.lib.service; import android.app.DownloadManager; import android.app.Service; import android.content
Android Handler模拟进度条更新
Handler是Android提供的消息处理类,可用于异步消息的处理,Handler关联了两个队列,一个是消息队列,里面顺序的存放消息对象(Message对象),另一个是存放实现了Runnabler接口对象的队列,系统会根据顺序,取出消息或者Runnable接口对象执行,默认的,Handler对象并没有单独开启一个新的线程,而是和主线程相关的,两个消息队列也是和主线程相关的,如果要单独开启线程,需