- 浏览: 64382 次
- 性别:
- 来自: 沈阳
文章分类
最新评论
多线程实现更新android进度条。
实例教程,详细信息我已经注释
package com.shougao.hello;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
public class HelloActivity extends Activity {
/** Called when the activity is first created. */
private ProgressBar progressBar;
private Button startButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
progressBar = (ProgressBar) findViewById(R.id.progressbar);
startButton = (Button) findViewById(R.id.startButton);
startButton.setOnClickListener(new ProgressBarOnClickListener());
}
class ProgressBarOnClickListener implements OnClickListener {
public void onClick(View v) {
// 设置进度条为可见状态
progressBar.setVisibility(View.VISIBLE);
// 添加updataThread到消息队列
updateBarHandler.post(updateThread);
}
}
// 使用匿名内部类来复写Handler当中的handlerMessage()方法
// 这个handler是需要反复执行的,直到消息队列中没有Message为止。
// 执行过程中把进度条就刷新了。
Handler updateBarHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
System.out.println("----------start handle");
progressBar.setProgress(msg.arg1);
updateBarHandler.post(updateThread); // 将要执行的线程放入到队列当中
}
};
// 线程类,该类使用匿名内部类的方式进行声明
Runnable updateThread = new Runnable() {
int i = 0;
public void run() {
// TODO Auto-generated method stub
System.out.println("----------Begin Thread");
i += 20;
// 得到一个消息对象,Message类是android系统提供的
Message msg = updateBarHandler.obtainMessage();
// 将Message对象的arg1参数的值设置为i
msg.arg1 = i; // 用arg1、arg2这两个成员变量传递消息,优点是系统性能消耗较少
try {
Thread.sleep(3000); // 让当前线程休眠1000毫秒
} catch (InterruptedException ex) {
ex.printStackTrace();
}
// 将Message对象加入到消息队列当中,等下次looper调用消息队列时,使用这个message显示进度条
// 或者说,把增加了10%的进度信息Message放到updateBarHandler的队列中。
if (i < 101){
updateBarHandler.sendMessage(msg);
}
// 如果i的值等于100
if (i == 100) {
// 将线程对象从队列中移除
updateBarHandler.removeCallbacks(updateThread);
}
}
};
}
实例教程,详细信息我已经注释
package com.shougao.hello;
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ProgressBar;
public class HelloActivity extends Activity {
/** Called when the activity is first created. */
private ProgressBar progressBar;
private Button startButton;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
progressBar = (ProgressBar) findViewById(R.id.progressbar);
startButton = (Button) findViewById(R.id.startButton);
startButton.setOnClickListener(new ProgressBarOnClickListener());
}
class ProgressBarOnClickListener implements OnClickListener {
public void onClick(View v) {
// 设置进度条为可见状态
progressBar.setVisibility(View.VISIBLE);
// 添加updataThread到消息队列
updateBarHandler.post(updateThread);
}
}
// 使用匿名内部类来复写Handler当中的handlerMessage()方法
// 这个handler是需要反复执行的,直到消息队列中没有Message为止。
// 执行过程中把进度条就刷新了。
Handler updateBarHandler = new Handler() {
@Override
public void handleMessage(Message msg) {
System.out.println("----------start handle");
progressBar.setProgress(msg.arg1);
updateBarHandler.post(updateThread); // 将要执行的线程放入到队列当中
}
};
// 线程类,该类使用匿名内部类的方式进行声明
Runnable updateThread = new Runnable() {
int i = 0;
public void run() {
// TODO Auto-generated method stub
System.out.println("----------Begin Thread");
i += 20;
// 得到一个消息对象,Message类是android系统提供的
Message msg = updateBarHandler.obtainMessage();
// 将Message对象的arg1参数的值设置为i
msg.arg1 = i; // 用arg1、arg2这两个成员变量传递消息,优点是系统性能消耗较少
try {
Thread.sleep(3000); // 让当前线程休眠1000毫秒
} catch (InterruptedException ex) {
ex.printStackTrace();
}
// 将Message对象加入到消息队列当中,等下次looper调用消息队列时,使用这个message显示进度条
// 或者说,把增加了10%的进度信息Message放到updateBarHandler的队列中。
if (i < 101){
updateBarHandler.sendMessage(msg);
}
// 如果i的值等于100
if (i == 100) {
// 将线程对象从队列中移除
updateBarHandler.removeCallbacks(updateThread);
}
}
};
}
发表评论
-
android 备用
2014-08-03 13:26 444http://blog.csdn.net/rain_butte ... -
Android中px与dip,sp与dip等的转换工具类(转)
2014-07-16 20:07 600http://www.cnblogs.com/wader201 ... -
android 字体总结
2014-07-15 21:53 548Android提供三种字体:“Sans”,“serif“和“m ... -
mina
2014-07-03 14:12 502http://chwshuang.iteye.com/blog ... -
android获取IMEI
2014-06-17 08:34 534核心代码: Imei = ((TelephonyMan ... -
andorid ui
2014-06-04 22:39 0http://blog.csdn.net/ddddpow/ar ... -
android alarmManage
2014-05-28 21:47 700转自:http://jinguo.iteye.com/bl ... -
adaf
2014-05-27 22:32 0http://www.eoeandroid.com/thr ... -
weixin
2014-05-13 22:42 0android weisixn -
jpajpa
2014-01-28 15:06 508http://www.iteye.com/problems/9 ... -
吉安帕
2014-01-23 22:30 0dfsgdaffgadrgad -
CrudRepository
2013-11-28 19:58 0PagingAndSortingRepository Cr ... -
Android 的第三方报表组件,AChartEngine 案列
2013-08-19 16:48 0http://www.kuaipan.cn/file/id_3 ... -
android sdk adress
2013-08-12 13:23 479developer.android.com/sdk/index ... -
android 结束进程
2013-07-29 22:01 733Android获取apk的版本及包名等信息 http://bl ... -
adnroid 4.0.3去掉虚拟导航栏
2013-07-27 20:54 1030http://blog.csdn.net/wfh1988/ar ... -
andorid全屏
2013-07-27 10:15 791super.onCreate(savedIns ... -
Foursquare
2012-10-12 17:22 0Foursquare -
sqllite brower
2012-09-11 23:05 672http://www.oschina.net/p/sqlite ... -
notice
2012-09-03 21:13 692http://tibaloga.iteye.com/blog/ ...
相关推荐
这很可能是一个包含示例代码的项目,用于演示如何在实际应用中实现多线程下载和进度条功能。项目可能包括以下几个部分: 1. **DownloadManager**:一个类,负责任务的创建、调度和管理,包括线程的启动和数据的合并...
以上就是Android中实现多线程下载并更新UI进度条的基本步骤。实际应用中可能需要考虑更多细节,如断点续传、网络状态检测、下载速度限制等。通过这种方式,我们可以有效地提高用户体验,避免因为长时间等待而导致的...
在Android开发中,当执行耗时操作如网络请求、大文件读写等时,为了保持用户界面(UI)的响应性,通常会采用多线程技术。本示例中的"线程的方法实现进度条更新"就是一种典型的使用线程来处理后台任务并实时更新UI的...
1.给进度调设置最大值 2.无论哪一个线程下载都要记录进度条当前位置,并设置值 3.给textview设置显示当前下载值 4.创建临时文件把以前下载好的位置记录起来 5.当线程下载完后删除临时保存进度条位置的文件
在多线程环境下,更新进度条的代码必须是线程安全的。这意味着需要使用互斥量、信号量、条件变量等同步原语,确保在任何时刻只有一个线程能修改进度条的状态。否则,可能会出现竞态条件,导致进度条显示不准确或者...
本项目“Android 多线程下载进度条src 支持android 1.6以上”提供了一个示例源代码(demo src),旨在帮助开发者实现这一功能。下面我们将详细探讨相关的知识点。 1. **多线程下载**: 在Android中,由于主线程...
在Android开发中,进度条对话框(ProgressDialog)是用户界面...此外,还可以了解到Android的UI线程管理、对话框的生命周期管理,以及如何将对话框与异步任务协同工作,这些都是Android开发中的基础但至关重要的技能。
在Android开发中,实现“多线程断点续传带进度条”的功能是一项技术挑战,它涉及到网络编程、文件操作、多线程并发控制以及UI更新等多个方面。下面将详细阐述这一技术点的关键知识点。 首先,多线程是实现断点续传...
在Android开发中,文件复制和进度条的显示是常见的需求...确保在正确线程中执行这些操作,并适当地更新进度条,以提供良好的用户体验。在实际项目中,你可能还需要考虑错误处理、取消操作等功能,以增加代码的健壮性。
在这个场景中,我们讨论的是如何在ListView中集成多选框、实现动态加载,并利用多线程来刷新进度条,提高用户体验。 首先,关于ListView中的多选框,这通常涉及到Adapter的自定义。在Adapter的getView()方法中,...
本教程将通过一个名为“Android更新下载进度条 demo”的项目来探讨如何在Android中实现这一功能。这个项目涉及到的关键知识点包括`RemoteViews`的使用、通知栏通知以及异步任务的处理。 首先,`RemoteViews`是...
本项目“安卓进度条loadingprogress相关-多线程下载炫彩进度条.rar”显然关注的是如何在Android应用中实现一种动态、多彩的进度条来显示多线程下载的状态。 首先,我们要理解进度条的基本概念。在Android中,有两种...
在Android开发中,进度条对话框(ProgressDialog)是一种常见的用户界面元素,用于向用户显示一个正在进行的操作进度。这种对话框通常包含一...仔细研究这些文件,你将能更好地掌握Android UI设计和多线程编程的技巧。
在本文中,我们将深入探讨如何使用多线程技术来实现模拟下载功能,并结合进度条显示,以提供更好的用户体验。 首先,多线程是指在一个应用程序中同时执行多个线程,每个线程都有自己的执行路径。在下载场景中,多...
本教程将详细讲解如何自定义Android进度条的颜色、样式,包括水平进度条和圆形进度条。 首先,我们来看看水平进度条。Android系统提供了一个默认的HorizontalProgressBar,它的样式通常是横条形的。要改变其颜色,...
在Android开发中,实现多文件下载并展示...综上所述,实现Android多文件下载并显示进度条涉及了网络请求、多线程、文件IO、数据持久化、UI更新、错误处理等多个技术点。合理的设计和实现可以提供流畅且可靠的下载体验。
在Android开发中,创建一个带有进度条的音乐播放器是一个常见的需求。本项目"Android 带进度条的使用Service实现的音乐播放器...改进这些问题可能需要更深入地理解MediaPlayer的工作原理和Android的多线程通信机制。
在Android开发中,创建一个与应用宝类似的下载进度条是一个常见的需求,这涉及到自定义View、多线程处理以及UI更新等技术。本项目"Android-Android仿应用宝下载进度条"旨在实现一个类似应用宝App中的下载进度条效果...
总的来说,这个例子是一个很好的实践,可以帮助开发者了解如何在Android中实现多线程下载,以及如何同步更新UI来反映下载状态。通过学习这个例子,开发者可以掌握到处理并发和UI更新的关键技术,这对于任何Android...
在Android开发中,进度条(ProgressBar)是一种...以上就是关于Android进度条的一些核心知识点。通过对"Android 进度条源码.zip"文件的深入学习和实践,开发者可以更好地掌握进度条的使用和定制,提升应用的用户体验。