多线程实现Android更新进度条
来源:互联网 发布:input的file js 编辑:程序博客网 时间:2024/06/05 01:54
您的评价:
力荐
收藏该经验
多线程实现更新android进度条。
实例教程,详细信息我已经注释
01
package
com.shougao.hello;
02
03
import
android.app.Activity;
04
import
android.os.Bundle;
05
import
android.os.Handler;
06
import
android.os.Message;
07
import
android.view.View;
08
import
android.view.View.OnClickListener;
09
import
android.widget.Button;
10
import
android.widget.ProgressBar;
11
12
public
class
HelloActivity
extends
Activity {
13
/** Called when the activity is first created. */
14
15
private
ProgressBar progressBar;
16
private
Button startButton;
17
18
@Override
19
public
void
onCreate(Bundle savedInstanceState) {
20
super
.onCreate(savedInstanceState);
21
setContentView(R.layout.main);
22
23
progressBar = (ProgressBar) findViewById(R.id.progressbar);
24
startButton = (Button) findViewById(R.id.startButton);
25
26
startButton.setOnClickListener(
new
ProgressBarOnClickListener());
27
}
28
29
class
ProgressBarOnClickListener
implements
OnClickListener {
30
public
void
onClick(View v) {
31
// 设置进度条为可见状态
32
progressBar.setVisibility(View.VISIBLE);
33
// 添加updataThread到消息队列
34
updateBarHandler.post(updateThread);
35
}
36
}
37
38
// 使用匿名内部类来复写Handler当中的handlerMessage()方法
39
// 这个handler是需要反复执行的,直到消息队列中没有Message为止。
40
// 执行过程中把进度条就刷新了。
41
Handler updateBarHandler =
new
Handler() {
42
@Override
43
public
void
handleMessage(Message msg) {
44
System.out.println(
"----------start handle"
);
45
progressBar.setProgress(msg.arg1);
46
updateBarHandler.post(updateThread);
// 将要执行的线程放入到队列当中
47
}
48
};
49
50
// 线程类,该类使用匿名内部类的方式进行声明
51
Runnable updateThread =
new
Runnable() {
52
int
i =
0
;
53
54
public
void
run() {
55
// TODO Auto-generated method stub
56
System.out.println(
"----------Begin Thread"
);
57
i +=
20
;
58
// 得到一个消息对象,Message类是android系统提供的
59
Message msg = updateBarHandler.obtainMessage();
60
// 将Message对象的arg1参数的值设置为i
61
msg.arg1 = i;
// 用arg1、arg2这两个成员变量传递消息,优点是系统性能消耗较少
62
try
{
63
Thread.sleep(
3000
);
// 让当前线程休眠1000毫秒
64
}
catch
(InterruptedException ex) {
65
ex.printStackTrace();
66
}
67
// 将Message对象加入到消息队列当中,等下次looper调用消息队列时,使用这个message显示进度条
68
// 或者说,把增加了10%的进度信息Message放到updateBarHandler的队列中。
69
if
(i <
101
){
70
updateBarHandler.sendMessage(msg);
71
}
72
// 如果i的值等于100
73
if
(i ==
100
) {
74
// 将线程对象从队列中移除
75
updateBarHandler.removeCallbacks(updateThread);
76
}
77
}
78
};
79
}
- 多线程实现Android更新进度条
- 多线程实现Android更新进度条
- android使用AsyncTask来实现更新进度条
- 进度条实现(多线程)
- Android更新下载进度条
- Android更新下载进度条
- Android更新下载进度条
- Android更新进度条
- android 进度条更新
- android 多线程+断点续传+进度条
- Android 实现service后台多任务下载notification进度条更新
- Android版本更新及下载进度条的实现
- Android中通过实现线程更新ProgressDialog(对话进度条)
- Android中通过Handler实现进度条的实时更新
- 更新进度条C语言实现
- 多线程下载更新包并显示进度条
- Android Handler模拟进度条更新
- Android笔记-ListView总结(多选框ListViiew,动态加载,多线程更新ListView中的进度条)
- 解决“动态 MMap 没有空间了。请增大 APT::Cache-Limit 的大小”
- 学习spring源码
- Python os.path模块
- 发现一个小问题
- 在 Perl 中使用 Getopt::Long 模块来接收用户命令行参数
- 多线程实现Android更新进度条
- spring中使用form标签
- Oracle查询数据表结构(字段,类型,大小,备注)---数据库设计说明书
- 用户模式与内核模式
- Android客户端+WIFI访问某站点,一个纠结且无解的问题 Connection timed out
- DirectShow在视频处理方面的一些应用
- qt-mobility-opensource-src-1.2.0-arm cross compile error solved
- 被拒
- 什么是Windows驱动程序?