Handler 使用方法

来源:互联网 发布:java中concat函数 编辑:程序博客网 时间:2024/06/06 12:23
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_handler);
btnSendMsg=(Button)findViewById(R.id.btn_sendMsg);
ButtonListener bl=new ButtonListener();
btnSendMsg.setOnClickListener(bl);
handler =new FirstHandler();
tvWhat=(TextView)findViewById(R.id.tv_what);

}

class ButtonListener implements OnClickListener
{


@Override
public void onClick(View v) {
Message msg =handler.obtainMessage();
msg.what=3;
handler.sendMessage(msg);

}

}

class FirstHandler extends Handler
{


@Override
public void handleMessage(Message msg) {
   Integer what =msg.what;
   tvWhat.setText(what.toString());
}

}

     handler可以用来传消息,也可以用来打开一个线程

1、handler.post(线程对像(比如runnable)) 这个方法能够执行一个线程 。但是注意的是,这个方法没有打开一个新想成在执行 runnable 的run方法。

2、要打开一个新线程来执行run方法。需要写成Thread t =new Thread(r(runnable 对象)) t.strat();  这样就能打开一个新线程来执行run方法。

3、handler可以通过 handler.sendMessage(msg)方法发送消息。自动调用对应方法handleMessage()方法处理消息。也可以通过如下方法调用handleMessage()


消息被发送到指定的handler 的handlemessage 方法。

4、发送消息时希望能发送多数据时。新建一个bundle对象,将数据存放的bundle对象中,然后调用 msg.setData(bundle)将bundle 数据包放进去。当然最后要调用msg.sendToTarget();获得bundle 数据包的方法是 msg.getData();



  




原创粉丝点击