主页 > 小语种 > Android入门:Handler简介与实例

Android入门:Handler简介与实例

2020-06-21 07:23:37 作者:admin   |   浏览(152)

  package mars.barhandler;

  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;

  public class TestBarHandler extends Activity {

  //声明控件变量

  ProgressBar bar=null;

  Button startButton=null;

  @Override

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  //依据控件的ID掉掉落代表控件的对象,并为按钮设置监听器

  bar=(ProgressBar)findViewById(R.id.bar);

  startButton=(Button)findViewById(R.id.startButton);

  startButton.setOnClickListener(new ButtonListener());

  }

  //当点击startButton按钮时,就会履行ButtonListener的onClick方法

  class ButtonListener implements OnClickListener{

  public void onClick(View v) {

  // TODO Auto-generated method stub

  bar.setVisibility(View.VISIBLE);

  updateBarHandler.post(updateThread);

  }

  }

  //应用匿名外部类来复写Handler傍边的handleMessage方法

  Handler updateBarHandler=new Handler(){

  @Override

  public void handleMessage(Message msg) {

  bar.setProgress(msg.arg1);

  Bundle bundle=msg.getData();

  updateBarHandler.post(updateThread);

  System.out.println("test---->" + bundle.getString("test"));

  }

  };

  //线程类,该类应用匿名外部类的方法停止声明

  Runnable updateThread=new Runnable(){

  int i=0 ;

  public void run() {

  System.out.println("Begin Thread" + i);

  i=i + 10 ;

  //掉掉落一个音讯对象,Message类是有Android操作系统供给

  Message msg=updateBarHandler.obtainMessage();

  //将msg对象的arg1参数的值设置为i,用arg1和arg2这两个成员变量传递音讯,长处是系统功用消耗较少

  msg.arg1=i ;

  Bundle bundle=new Bundle();

  bundle.putString("test", "test bundle");

  msg.setData(bundle);

  try {

  //设置以后显示睡眠1秒

  Thread.sleep(1000);

  } catch (InterruptedException e) {

  // TODO Auto-generated catch block

  e.printStackTrace();

  }

  //将msg对象参与到音讯队列傍边

  if( i > 100){

  //假设当i的值为100时,就将线程对象从handler傍边移除

上一篇:隐形眼镜结冰还能使用吗?

下一篇:没有了