android handler和looper

1 消息在主线程执行

handler = new Handler() {

@Override public void handleMessage(Message msg) {

switch (msg.what) {

case R.string.hello: Log.i("tag", "this handler thread is " + Thread.currentThread().getName()); break;
default: break;

}

}

};

class ThreadWithMessage extends Thread {
Looper myLooper = null;


@Override
public void run() {
Log.i("tag", "the ThreadWithMessage is starting thread id is " + Thread.currentThread().getName());
消息在不同线程间处理方法(消息在主线程中处理):

Message message = new Message();

message.what = R.string.hello;
handler.sendMessage(message);

}
}

activity中的oncreate()方法中

// 消息在不同线程间处理方法(消息在主线程处理)
// Log.i("tag", "the main thread is" + Thread.currentThread().getName());
// new ThreadWithMessage().start();

 

 

 

消息在子线程执行

class ThreadWithMessage extends Thread {
Looper myLooper = null;
@Override
public void run() {
Log.i("tag", "the ThreadWithMessage is starting thread id is " + Thread.currentThread().getName());
// 实现线程间通信(消息在子线程中处理)
Looper.prepare();// 将looper 设置到这个线程中
myLooper = Looper.myLooper();
Looper.loop();// 开启消息循环
}
}

 

2 activity的onCreate()方法中

Log.i("tag", "the main thread is " + Thread.currentThread().getName());
// 消息在子线程处理
threadWithMessage = new ThreadWithMessage();
threadWithMessage.start();\

// 消息在子线程处理
Looper looper = threadWithMessage.myLooper;
handler = new Handler(looper) {


@Override
public void handleMessage(Message msg) {
switch (msg.what) {
case R.string.hello:
Log.i("tag", "the handler thread is" + Thread.currentThread().getName());
break;


default:
break;
}
}


};
Message message = new Message();
message.what = R.string.hello;
handler.sendMessage(message);

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值