`

多线程实现更新android进度条。

 
阅读更多
多线程实现更新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);
}
}
};
}
分享到:
评论

相关推荐

    多线程下载+进度条

    这很可能是一个包含示例代码的项目,用于演示如何在实际应用中实现多线程下载和进度条功能。项目可能包括以下几个部分: 1. **DownloadManager**:一个类,负责任务的创建、调度和管理,包括线程的启动和数据的合并...

    Android 多线程下载+UI进度条刷新

    以上就是Android中实现多线程下载并更新UI进度条的基本步骤。实际应用中可能需要考虑更多细节,如断点续传、网络状态检测、下载速度限制等。通过这种方式,我们可以有效地提高用户体验,避免因为长时间等待而导致的...

    线程的方法实现进度条更新

    在Android开发中,当执行耗时操作如网络请求、大文件读写等时,为了保持用户界面(UI)的响应性,通常会采用多线程技术。本示例中的"线程的方法实现进度条更新"就是一种典型的使用线程来处理后台任务并实时更新UI的...

    android多线程下载带进度条

    1.给进度调设置最大值 2.无论哪一个线程下载都要记录进度条当前位置,并设置值 3.给textview设置显示当前下载值 4.创建临时文件把以前下载好的位置记录起来 5.当线程下载完后删除临时保存进度条位置的文件

    多线程保存文件、显示进度条、对话框大小可变 进度条

    在多线程环境下,更新进度条的代码必须是线程安全的。这意味着需要使用互斥量、信号量、条件变量等同步原语,确保在任何时刻只有一个线程能修改进度条的状态。否则,可能会出现竞态条件,导致进度条显示不准确或者...

    Android 多线程下载进度条src 支持android 1.6以上

    本项目“Android 多线程下载进度条src 支持android 1.6以上”提供了一个示例源代码(demo src),旨在帮助开发者实现这一功能。下面我们将详细探讨相关的知识点。 1. **多线程下载**: 在Android中,由于主线程...

    Android 进度条对话框Demo.zip

    在Android开发中,进度条对话框(ProgressDialog)是用户界面...此外,还可以了解到Android的UI线程管理、对话框的生命周期管理,以及如何将对话框与异步任务协同工作,这些都是Android开发中的基础但至关重要的技能。

    多线程断点续传带进度条

    在Android开发中,实现“多线程断点续传带进度条”的功能是一项技术挑战,它涉及到网络编程、文件操作、多线程并发控制以及UI更新等多个方面。下面将详细阐述这一技术点的关键知识点。 首先,多线程是实现断点续传...

    文件复制及进度条 android 文件复制 进度条 progressdialog

    在Android开发中,文件复制和进度条的显示是常见的需求...确保在正确线程中执行这些操作,并适当地更新进度条,以提供良好的用户体验。在实际项目中,你可能还需要考虑错误处理、取消操作等功能,以增加代码的健壮性。

    ListView多选框 动态加载 多线程刷新进度条

    在这个场景中,我们讨论的是如何在ListView中集成多选框、实现动态加载,并利用多线程来刷新进度条,提高用户体验。 首先,关于ListView中的多选框,这通常涉及到Adapter的自定义。在Adapter的getView()方法中,...

    Android更新下载进度条 demo

    本教程将通过一个名为“Android更新下载进度条 demo”的项目来探讨如何在Android中实现这一功能。这个项目涉及到的关键知识点包括`RemoteViews`的使用、通知栏通知以及异步任务的处理。 首先,`RemoteViews`是...

    安卓进度条loadingprogress相关-多线程下载炫彩进度条.rar

    本项目“安卓进度条loadingprogress相关-多线程下载炫彩进度条.rar”显然关注的是如何在Android应用中实现一种动态、多彩的进度条来显示多线程下载的状态。 首先,我们要理解进度条的基本概念。在Android中,有两种...

    android 进度条对话框

    在Android开发中,进度条对话框(ProgressDialog)是一种常见的用户界面元素,用于向用户显示一个正在进行的操作进度。这种对话框通常包含一...仔细研究这些文件,你将能更好地掌握Android UI设计和多线程编程的技巧。

    模拟多线程下载(进度条显示)

    在本文中,我们将深入探讨如何使用多线程技术来实现模拟下载功能,并结合进度条显示,以提供更好的用户体验。 首先,多线程是指在一个应用程序中同时执行多个线程,每个线程都有自己的执行路径。在下载场景中,多...

    android 进度条的颜色水平和圆圈的

    本教程将详细讲解如何自定义Android进度条的颜色、样式,包括水平进度条和圆形进度条。 首先,我们来看看水平进度条。Android系统提供了一个默认的HorizontalProgressBar,它的样式通常是横条形的。要改变其颜色,...

    Android 多文件下载进度条

    在Android开发中,实现多文件下载并展示...综上所述,实现Android多文件下载并显示进度条涉及了网络请求、多线程、文件IO、数据持久化、UI更新、错误处理等多个技术点。合理的设计和实现可以提供流畅且可靠的下载体验。

    Android 带进度条的使用Service实现的音乐播放器

    在Android开发中,创建一个带有进度条的音乐播放器是一个常见的需求。本项目"Android 带进度条的使用Service实现的音乐播放器...改进这些问题可能需要更深入地理解MediaPlayer的工作原理和Android的多线程通信机制。

    Android-Android仿应用宝下载进度条

    在Android开发中,创建一个与应用宝类似的下载进度条是一个常见的需求,这涉及到自定义View、多线程处理以及UI更新等技术。本项目"Android-Android仿应用宝下载进度条"旨在实现一个类似应用宝App中的下载进度条效果...

    android 多线程 下载 更新 ui 例子

    总的来说,这个例子是一个很好的实践,可以帮助开发者了解如何在Android中实现多线程下载,以及如何同步更新UI来反映下载状态。通过学习这个例子,开发者可以掌握到处理并发和UI更新的关键技术,这对于任何Android...

    Android 进度条源码.zip

    在Android开发中,进度条(ProgressBar)是一种...以上就是关于Android进度条的一些核心知识点。通过对"Android 进度条源码.zip"文件的深入学习和实践,开发者可以更好地掌握进度条的使用和定制,提升应用的用户体验。

Global site tag (gtag.js) - Google Analytics