Handler是Android提供的消息处理类,可用于异步消息的处理,Handler关联了两个队列,一个是消息队列,里面顺序的存放消息对象(Message对象),另一个是存放实现了Runnabler接口对象的队列,系统会根据顺序,取出消息或者Runnable接口对象执行,默认的,Handler对象并没有单独开启一个新的线程,而是和主线程相关的,两个消息队列也是和主线程相关的,如果要单独开启线程,需要借助Looper对象。
下面是一个利用Handler更新进度条的简单应用,里面用到了发送消息与发送实现Runnable接口对象
截图:
代码:
下面是一个利用Handler更新进度条的简单应用,里面用到了发送消息与发送实现Runnable接口对象
截图:
代码:
- package com.zhou.activity;
- import android.app.Activity;
- import android.os.Bundle;
- import android.os.Handler;
- import android.os.Message;
- import android.view.View;
- import android.widget.Button;
- import android.widget.ProgressBar;
- public class HandlerActivity extends Activity {
- ProgressBar progressBar;
- Button start;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- progressBar=(ProgressBar) this.findViewById(R.id.progressBar);
- start=(Button) this.findViewById(R.id.start);
- start.setOnClickListener(new StartClick());
- }
- Handler handler = new Handler(){
- @Override
- public void handleMessage(Message msg) {
- super.handleMessage(msg);
- progressBar.setProgress(msg.arg1);
- handler.postDelayed(updateProgress,1000);
- }};
- class StartClick implements View.OnClickListener {
- @Override
- public void onClick(View v) {
- progressBar.setVisibility(View.VISIBLE);
- handler.post(updateProgress);
- }
- }
- Runnable updateProgress = new Runnable() {
- int i=0;
- @Override
- public void run() {
- i+=10;
- Message msg = handler.obtainMessage();
- msg.arg1=i;
- handler.sendMessage(msg);
- if(i==100){
- handler.removeCallbacks(updateProgress);
- }
- }
- };
- }