handler和message传值两例

来源:互联网 发布:linux dhcp服务器搭建 编辑:程序博客网 时间:2024/06/07 06:50

程序效果:为了显示如何用message传值的简单例子

例1,点击按钮,持续显示当前系统时间(bundle传值,耗时,效率低)

例2,点击按钮,progressbar持续前进(message方法传值,效率高,但只能传整型int和对象object)

例1,主activity

package com.song;    import java.text.SimpleDateFormat;  import java.util.Date;    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.TextView;    public class C91_HandlerActivity extends Activity {      /** Called when the activity is first created. */      TextView textview;      Button button;      MyThread mythread;      Thread thread;      MyHandler handler;      @Override      public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.main);          textview=(TextView)findViewById(R.id.textview);          button=(Button)findViewById(R.id.button);          handler=new MyHandler();          button.setOnClickListener(new OnClickListener() {                            @Override              public void onClick(View v) {                  // TODO Auto-generated method stub                  mythread=new MyThread();                  thread=new Thread(mythread);                  thread.start();              }          });      }      class MyHandler extends Handler      {          //接受message的信息          @Override          public void handleMessage(Message msg) {              // TODO Auto-generated method stub              super.handleMessage(msg);              if(msg.what==1)              {                  textview.setText(msg.getData().getString("time"));              }                        }      }      class MyThread implements Runnable      {            @Override          public void run() {              // TODO Auto-generated method stub              while(true)              {                  try {                      Thread.sleep(1000);                      String time=new SimpleDateFormat("yyyy/MM/dd HH:mm:ss").format(new Date());                      System.out.println(time);                      Message message=new Message();                      Bundle bundle=new Bundle();                      bundle.putString("time", time);                      message.setData(bundle);//bundle传值,耗时,效率低                      handler.sendMessage(message);//发送message信息                      message.what=1;//标志是哪个线程传数据                      //message有四个传值方法,                      //两个传int整型数据的方法message.arg1,message.arg2                      //一个传对象数据的方法message.obj                      //一个bandle传值方法                    } catch (InterruptedException e) {                      // TODO Auto-generated catch block                      e.printStackTrace();                  }              }          }                }  }  
package com.song;    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 C92_Handler2Activity extends Activity {      /** Called when the activity is first created. */      Button button;      ProgressBar bar;      MyThread mythread;      Thread thread;      MyHandler handler;      @Override      public void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.main);          button=(Button)findViewById(R.id.button);          bar=(ProgressBar)findViewById(R.id.bar);          handler=new MyHandler();          button.setOnClickListener(new OnClickListener() {                            @Override              public void onClick(View v) {                  // TODO Auto-generated method stub                  mythread=new MyThread();                  thread=new Thread(mythread);                  thread.start();              }          });         }       class MyHandler extends Handler      {          @Override          public void handleMessage(Message msg) {              // TODO Auto-generated method stub              super.handleMessage(msg);              if(msg.what==1)              {                  System.out.println(msg.arg1+"handle");                  bar.setProgress(msg.arg1);              }          }      }          class MyThread implements Runnable      {          int pro=0;          @Override          public void run() {              // TODO Auto-generated method stub              while(true)              {                  try {                      Thread.sleep(1000);                      pro=bar.getProgress()+1;                      bar.setProgress(pro);                       System.out.println(pro+"thread");                      Message message=new Message();                      message.arg1=pro;                      message.what=1;                      handler.sendMessage(message);                                        } catch (InterruptedException e) {                      // TODO Auto-generated catch block                      e.printStackTrace();                  }                                }          }                }       }  



0 0
原创粉丝点击