Android学习第15课—Handler的使用(二)

主要内容:
1 Handler与线程
2 Bundle的用法
3 在新线程当中处理消息的方法


      Handler的post调用与Activity处于统一线程。要想使用另外的线程来处理,可以通过HandlerThread类,或者重现编写一个继承Handler类的子类。

Bundle: 与Map类似存放键值对,特殊在键的类型都是String,值的类型也是有限的。可以使用Bundle在线程中传递数据。


package dj.handler;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.HandlerThread;
import android.os.Looper;
import android.os.Message;
import android.util.Log;

public class HandlerTestActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        //打印当前线程的id
        Log.d("TAG", "Activity-->" + Thread.currentThread().getId());
        //生成一个HandlerThread对象,实现了使用Looper来处理消息队列的功能,这个类由Android应用程序框架提供
        HandlerThread handlerThread = new HandlerThread("handler_thread");//HandlerThread提供循环处理消息的机制
        //在使用HandlerThread的getLooper之间,必须先执行start方法
        handlerThread.start();
        MyHandler myHandler = new MyHandler(handlerThread.getLooper());
        Message msg = myHandler.obtainMessage();
        //将msg发送到目标对象,就是生成该msg的Handler对象        
        Bundle b = new Bundle();//使用Bundle来传递数据
        b.putInt("age", 20);
        b.putString("name", "John");
        msg.setData(b);
        msg.sendToTarget();
        
    }
    
    class MyHandler extends Handler
    {
    	public MyHandler(){}
    	public MyHandler(Looper looper){
    		//Handler使用Looper这个线程来处理消息队列,即将Handler绑定到另外一个线程中来取消息对象
    		super(looper);
    	}
    	@Override
    	public void handleMessage(Message msg)
    	{
    		Bundle b = msg.getData();
    		int age= b.getInt("age");
    		String name = b.getString("name");
    		Log.d("TAG", "age:" + age + ", name:" + name);
    		Log.d("TAG", "handler-->" + Thread.currentThread().getId());
    		Log.d("TAG", "handleMessage");
    	}
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值