读书人

Android开发之handler(2)

发布时间: 2012-11-23 00:03:43 作者: rapoo

Android开发之handler(二)

之前学习了handler的简单用法,如果还不知道handler是什么,可以看一下点击打开链接。这次深入一下,还是一样,先来看一下执行的效果

Android开发之handler(2)Android开发之handler(2)Android开发之handler(2)

Android开发之handler(2)


main.xml

package com.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;public class progressHandler extends Activity {    /** Called when the activity is first created. */private ProgressBar bar = null;private Button btn = null;    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);                bar = (ProgressBar)findViewById(R.id.bar);        btn = (Button)findViewById(R.id.btn);        btn.setOnClickListener(new MyListener());    }        class MyListener implements OnClickListener{@Overridepublic void onClick(View arg0) {//第一步,触发button事件,把线程对象updateThread 添加到线程消息队列中// TODO Auto-generated method stubbar.setVisibility(View.VISIBLE);handler.post(updateThread);}        }        Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg) {//第五步,处理子线程发过来的消息// TODO Auto-generated method stubsuper.handleMessage(msg);bar.setProgress(msg.arg1);handler.post(updateThread);//继续调用子线程}        };    Runnable updateThread = new Runnable(){    int i = 0;@Overridepublic void run() {//第二步,启动线程// TODO Auto-generated method stubSystem.out.println("begin a thread");i += 10;Message msg = handler.obtainMessage();//第三步,从消息池中返回一个消息msg.arg1 = i;try {Thread.sleep(1000);} catch (InterruptedException e) {// TODO Auto-generated catch blocke.printStackTrace();}handler.sendMessage(msg);//第四步,从子线程发送消息给主线程if(i==100){//第五步,判断i的值(由于handler是异步处理消息,所以同时会处理子线程发送给主线程的消息)handler.removeCallbacks(updateThread);bar.setVisibility(View.GONE);Toast.makeText(progressHandler.this, "你个SB!", Toast.LENGTH_LONG).show();}}        };}



读书人网 >Android

热点推荐