android 的handler 机制
来源:互联网 发布:淘宝文案兼职写衣服 编辑:程序博客网 时间:2024/05/06 22:28
在android中,用户自己创建的工作线程和UI主线程是不同的线程。handler 是android中一种消息的异步处理机制。在用户未给自己的工作线程创建Looper,即默认情况下,handler 会在主线程的Looper下进行消息处理,这时handler占用主线程。
当用户在启动自己的工作线程时调用Looper.prepare(),这时创建了自己的Looper,当我们利用handler进行消息处理时,自己的工作线程将和主线程不是同一个线程。代码如下:
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.widget.Button;
public class Demo1 extends Activity{
private Button button1,button2;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main2);
button1=(Button)findViewById(R.id.button1);
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
MyThread myThread=new MyThread();
myThread.start();
Log.i("main Thread UI id:",Thread.currentThread().getId()+"");
}
});
}
class MyHandler extends Handler {
public MyHandler(Looper looper){
super(looper);
}
@Override
public void handleMessage(Message msg) {
// TODO Auto-generated method stub
super.handleMessage(msg);
Log.i("handler thread id:",Thread.currentThread().getId()+"");
}
}
class MyThread extends Thread {
private MyHandler myHandler;
private String obj;
public void run(){
Looper myLopper ;
Looper.prepare();
myLopper=Looper.myLooper();
myHandler=new MyHandler(myLopper);
Log.i("my thread id:",""+Thread.currentThread().getId());
obj="my thread";
myHandler.removeMessages(0);
Message message=myHandler.obtainMessage(1,1,1,obj);
myHandler.sendMessage(message);
Looper.loop();
}
}
}
运行结果如下:
I/main Thread UI id:( 725): 1
I/my thread id:( 725): 8
I/handler thread id:( 725): 8
由此可见,当我们创建自己的Looper时,系统的handler将占用用户的工作线程。
本文出自 “孤独的守望者” 博客,请务必保留此出处http://lvg2010.blog.51cto.com/1318947/503935
- Android的Handler机制
- android 的handler 机制
- Android的handler机制
- android的handler机制
- Android的Handler机制
- Android的Handler机制
- Android的Handler机制
- android的handler机制
- Android的Handler机制
- Android Handler机制的原理
- [Android]Handler的消息机制
- Android下的Handler机制
- Android通信的Handler机制
- Android handler机制的原理
- 【android】Handler机制的原理
- Android:Handler机制的原理
- Android Handler机制的原理
- android--handler机制的原理
- stack & heap
- 传智播客---文件上传于文件下载
- 淡淡好的导航对网站的效用有多大
- Android Handler
- JSP和Servlet
- android 的handler 机制
- 平时php开发工作中常用的几个命令
- Android Handler的使用
- Android中的Handler, Looper, MessageQueue和Thread
- Liferay MVCPortlet + iBatis
- 去掉excel保存文件时提示:隐私问题警告:此文档中包含宏
- Hadoop并行计算原理与分布式并发编程
- Hibernate使用jdbc只能获取单字符问题
- 虚拟打印机开发日志(一):使用x64 WIN7编译环境编译的完整步骤