在Android中一个常见的、经常会遇到的需求是:用户的行为(如登录或下载图片)触发了到服务器端的数据请求,而这一过程较慢,为了达到较好的用户体验,需要在用户界面上显示一个等待的进度条或对话框,网上有很多种实现方法,我比较推荐使用handler的方式进行多线程处理。
首先在Activity中声明点击按钮时的动作,即:弹出对话框,并打开下载线程
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
progressDialog = new ProgressDialog(MyActivity.this);
progressDialog.setMessage("正在向服务器提交请求");
progressDialog.setTitle("请稍候");
progressDialog.show();
Log.v(TAG, address.getText().toString());
Runnable r = new ConnectThread(handler);
th = new Thread(r);
th.start();
}
});
同时在Activity中还需要定义Handler并把它的句柄传递到下载线程中,用来传递消息,即下载完成后采取什么样的动作,例如打开一个新的Activity:
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
........................
progressDialog.dismiss(); //进度条消失
Log.v(TAG, "连接成功");
startActivity(intent);
}
};
在ConnectThread中就可以干原本要干的事了,即下载或是登录,处理完之后在线程结束之前使用之前传递的handler句柄发送一个空消息即可:
public void run() {
..................
handler.sendEmptyMessage(0);
}
个人觉得使用这种方式代码结构较清晰,应用效果较好
分享到:
相关推荐
1.给进度调设置最大值 2.无论哪一个线程下载都要记录进度条当前位置,并设置值 3.给textview设置显示当前下载值 4.创建临时文件把以前下载好的位置记录起来 5.当线程下载完后删除临时保存进度条位置的文件
Android 多线程下载进度条 demo src
Android 进行文件分段多线程下载的实例,用户可以指定线程数,还可以通过进度条查看下载的进度。
http://blog.csdn.net/sky286753213/article/details/11770299
android 多线程下载例子,多文件显示下载进度条,进度条实时更新,学习用的好例子
多线程断点续传带进度条 android web
android有android多线程下载 android有进度条下载 android有速度检查下载,共享给大家!希望对大家有帮助!如有问题,请联系我:Email:vipa1888@163.com QQ:840950105
本文实例讲述了Android编程开发实现带进度条和百分比的多线程下载。分享给大家供大家参考,具体如下: 继上一篇《java多线程下载实例详解》之后,可以将它移植到我们的安卓中来,下面是具体实现源码: DownActivity....
4、多线程下载:使用RandomAccessFile输出流写 5、多线程下载-断点续传:使用临时文件记录当前下载的数据,下次读取文件开始下载 6、下载显示进度条-ProgressBar 7、在gitbub上面下载已经有支持断点续传功能的代码...
主要介绍了Android多线程+单线程+断点续传+进度条显示下载功能,需要的朋友可以参考下
使用多线程实现的一个下载工具,可以实现多线程下载,带进度条,显示下载进度,适合开发者植入模块。
Android多线程断点续传下载,可以应付各种网络中断,应用退出,支持暂停、进度条
Android 多线程下载的Demo 实时更新进度条百分比
android多线程下载,可暂停,退出程序后再次启动程序时能自动开始下载。采用sqllite存储,代码写的不是很好。希望有写修改之后最完美的版本再放出来
利用idhttp进行多线程下载,带进度条显示,可以暂停下载和继续下载,未使用第三方控件,在delphi xe7下测试通过。 昨天发的代码发现一个bug,就是无论几线程,都是从文件首部开始下载,才发现xe7下idhhtp控件的...
Android Asynctask 先小试牛刀,了解一下各个方法执行过程,关注博客http://himici.com/
// 每个线程负责下载的大小 public int blockSize; public static int threadCount;// 数量 // 访问的path public String path; public static boolean flag = true; // 记录进度条的值 public static ...
这是一个在listview或gridview中选项同时分别下载文件的demo。 每个选项进度条分别更新进度。