首先声明Handle对象和该类的handleMessage方法:

    Handler BarHandler = new Handler(){

      @Override
      public void handleMessage(Message msg) {
        // TODO Auto-generated method stub
        super.handleMessage(msg);
        firstBar.setProgress(msg.arg1);      //更新进度条的进度
      }
    }; //声明Handle对象

  然后声明Runnable对象,通过Handler对象将Runnable对象压入队列(首次压入请自行在监听器中压入BarHandler.post(updataThread);):

    Runnable updataThread = new Runnable(){
      int i = 0;
      @Override
      public void run() {
        // TODO Auto-generated method stub
        i+=10;
        //得到一个消息对象,Message类是由Android操作系统提供
        Message msg = BarHandler.obtainMessage();
        //将msg对象的arg1参数的值设置为i,用arg1和arg2这两个成员变量传递消息,优点是系统性能消耗较少
        msg.arg1 = i;
        try{
          Thread.sleep(1000);
          }catch(InterruptedException e){
            e.printStackTrace();
          }
        //将消息压入消息队列,当前线程继续向下执行,sendMessage方法执行完后异步调用handleMessage方法
        BarHandler.sendMessage(msg);
        if(i == firstBar.getMax()){      //当i的值等于当前进度时,将updataThread对象从队列中移除
          BarHandler.removeCallbacks(updataThread);
        }
        else{
          //将线程压入线程队列,此方法调用的updataThread线程和主线程处于同一线程
          BarHandler.post(updataThread);
          //另一种方法是利用Thread对象的start方法调用的线程不是和主线程处于同一线程
          //Thread t = new Thread(updataThread);
          //t.start();
        }
      }
    };

Handle类与线程的更多相关文章

  1. android中Handle类的用法

    android中Handle类的用法 当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无 ...

  2. Handle类的用法

    android中Handle类的用法 当我们在处理下载或是其他需要长时间执行的任务时,如果直接把处理函数放Activity的OnCreate或是OnStart中,会导致执行过程中整个Activity无 ...

  3. 用ThreadLocal类实现线程安全的正确姿势

    大家通常知道,ThreadLocal类可以帮助我们实现线程的安全性,这个类能使线程中的某个值与保存值的对象关联起来.ThreadLocal提供了get与set等访问接口或方法,这些方法为每个使用该变量 ...

  4. 线程操作案例--生产者与消费者,Object类对线程的支持

    本章目标 1)加深对线程同步的理解 2)了解Object类中对线程的支持方法. 实例 生产者不断生产,消费者不断消费产品. 生产者生产信息后将其放到一个区域中,之后消费者从区域中取出数据. 既然生产的 ...

  5. 【转】线程、Thread类和线程终止

    一.线程Thread启动 0. Thread类实现了java.lang.Runnable接口,即实现了run方法.虽然在Sun JDK中,start()调用了start0()方法,start0()方法 ...

  6. Android(java)学习笔记62:继承Thread类创建线程类

    package cn.itcast_02; /* * 该类要重写run()方法,为什么呢? * 不是类中的所有代码都需要被线程执行的. * 而这个时候,为了区分哪些代码能够被线程执行,java提供了T ...

  7. java基础知识回顾之java Thread类--java线程实现常见的两种方式实现Runnable接口(二)

    创建线程的第二中方式: /** *      步骤: 1定义类实现Runnable接口      2.实现Runnable接口中的run方法.      3.通过Thread类建立线程对象,并将Run ...

  8. 用Thread类创建线程-2

    支持原创,本系列文章均转自:http://www.blogjava.net/nokiaguy/category/38172.html 在Java中创建线程有两种方法:使用Thread类和使用Runna ...

  9. Java集合中那些类是线程安全的

    线程安全类 在集合框架中,有些类是线程安全的,这些都是jdk1.1中的出现的.在jdk1.2之后,就出现许许多多非线程安全的类. 下面是这些线程安全的同步的类: vector:就比arraylist多 ...

随机推荐

  1. ZXing二维码生成在Unity3D中出错,数组超出界限的解决办法

    错误截图: IndexOutOfRangeException: Array index is out of range.ZXing.Color32Renderer.Render (ZXing.Comm ...

  2. dialog

    function showDialog(){ var $by = $(window), obj = $('.dialog'), brsW = $by.width(), brsH = $by.heigh ...

  3. JQuery的父、子、兄弟节点查找方法

    jQuery.parent(expr)           //找父元素 jQuery.parents(expr)          //找到所有祖先元素,不限于父元素 jQuery.children ...

  4. Html5选择本地视频音频文件播放

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. ormlite的使用方法

    ormlite是什么? 简单来说,就是我们定义一个实体类,利用这个框架,它可以帮我们吧这个实体映射到我们的数据库中,在Android中是SQLite,数据中的字段就是我们定义实体的成员变量. 官网地址 ...

  6. java .bat批处理(java cmd命令)

    参考:http://www.iitshare.com/under-the-cmd-compile-the-java.html 参考:http://zhidao.baidu.com/link?url=Y ...

  7. 使用密码记录工具keepass来保存密码

    在第一章,曾经给过您建议,密码不要保存在文档中,那样不安全,如果密码很多而且又很复杂,人的大脑是不可能很容易记住的,只能记录下来,如果不能记在文档中那记在哪里呢?下面介绍给您一款记录密码的软件,使用. ...

  8. 《CLR.via.C#第三版》第二部分第10,11章节读书笔记(五)

    第10章是对 属性 做阐述 属性本质上是方法 匿名类型的使用: }; Console.WriteLine("Name={0},Year={1}",o1.Name,o1.Year); ...

  9. Mycat 全局系列号

    标签:utf8 概述 本篇文章介绍mycat怎样在分库分表的情况下保证主键的全局唯一方法,接下来就来分析三种方法各自的优缺点. 配置 文件方式获取 1.修改server配置文件 vim server. ...

  10. zookeeper分布式锁实现

    1.定义分布式锁接口 package com.ljq.lock; import java.util.concurrent.TimeUnit; public interface DistributedL ...