android多线程进度条_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > android多线程进度条

android多线程进度条

 2014/4/23 21:27:19  xiaochao1234  博客园  我要评论(0)
  • 摘要:多线程实现更新android进度条。实例教程,详细信息我已经注释android多线程进度条01packagecom.shougao.hello;0203importandroid.app.Activity;04importandroid.os.Bundle;05importandroid.os.Handler;06importandroid.os.Message;07importandroid.view.View;08importandroid.view.View
  • 标签:android 进度条 多线程 线程

线程实现更新android进度条

实例教程,详细信息我已经注释   android多线程进度条   01package com.shougao.hello; 02 03import android.app.Activity; 04import android.os.Bundle; 05import android.os.Handler; 06import android.os.Message; 07import android.view.View; 08import android.view.View.OnClickListener; 09import android.widget.Button; 10import android.widget.ProgressBar; 11 12public 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}
发表评论
用户名: 匿名