android中的Handler(1)

一、Hanler?

Handler可以认为是一个容器,可以装Runnable和Message用于信息的传递,
当其装载的Runnable发出Message时,会触发Handler对Message进行处理
Handler 主要有两个用处:
1.在将来的某个时刻调度存放在其中的messages and runnables
2.独立于持有Handler的线程

二、场景

下载文件,提供一个下载进度条,当下载完成时,提示下载完成


三、代码

package linys.handler;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;import android.widget.Toast;/** *  * @Project: Android_ProgressBarHandler * @Desciption: Handler的Demo: * Handler可以认为是一个容器,可以装Runnable和Message用于信息的传递, * 当其装载的Runnable发出Message时,Handler会对Message进行处理 *  * Handler 主要有连个用处: * 1.在将来的某个时刻调度存放在其中的messages and runnables * 2.独立于持有Handler的线程  * @Author: LinYiSong * @Date: 2011-3-9~2011-3-9 */public class HandlerProgressBar extends Activity {private ProgressBar bar;private Button btn;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        //取得控件        bar=(ProgressBar)this.findViewById(R.id.bar);        btn=(Button)this.findViewById(R.id.myButton);        /*         * 为控件添加监听器         *当点击后,启动r线程(此处还是不独立主线程,可以看做是普通的方法调用)         */        btn.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v) {bar.setVisibility(View.VISIBLE);//启动Handle中的线程handler.post(r);//使用handler的post方法其实还是在调用它的线程中,并没有独立于主线程}});    }    Handler handler=new Handler(){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);//设置进度条的进度值int i=msg.arg1;bar.setProgress(i);handler.post(r);}        };    Runnable r=new Runnable(){    int i=0;@Overridepublic void run() {i=i+10;//向handler中的信息变量保存值Message msg=handler.obtainMessage();msg.arg1=i;//sleep 1s 后想handler发出信息,如果下载完成,则提下载完成,并移除线程try {Thread.sleep(1000);} catch (InterruptedException e) {e.printStackTrace();}//到100时结束if(i==100){Toast.makeText(HandlerProgressBar.this,"下载完成",Toast.LENGTH_SHORT).show();handler.removeCallbacks(r);}else{handler.sendMessage(msg);}}    };   }

更多相关文章

  1. Android设备和PC端通过USB线通信
  2. Android(安卓)源码分析之旅3.1--消息机制源码分析
  3. Android(安卓)HandlerThread用法
  4. Android期末复习(3)-service
  5. Android获取应用程序信息——PackageManager的基本使用
  6. Android中Log信息的输出方法
  7. Android异步加载图像(含线程池,缓存方法)
  8. Android(安卓)更新UI的两种方法——handler和runOnUiThread() -
  9. android.widget.Toast——快显信息

随机推荐

  1. Android(安卓)改变View位置 setLeft、etR
  2. android 可编辑的下拉框 Demo
  3. Android(安卓)Activity生命周期
  4. android API Demo之使用ViewFlipper制作
  5. Android判断应用程序从后台回到前台
  6. 专利敲诈——微软对Android痛下杀手的背
  7. How to build Android(安卓)Windows SDK
  8. Android(Java)正则表达式判断手机号、邮箱
  9. Android全屏显示
  10. Android资源文件mk的格式