您的位置:首页 > 其它

HandlerThread实现多线程操作_个人学习小结

2013-04-28 11:52 435 查看
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
System.out.println("Activity------>"+Thread.currentThread().getId());
//创建HandlerThread实例 此类实现了使用Looper来处理消息的功能
HandlerThread ht=new HandlerThread("handler_Thread");
ht.start();
//通过ht.getLooper()得到HandlerThread的looper对象
myhandler myhand=new myhandler(ht.getLooper());
//创建一个Message实例 通过myhand类
Message msg=myhand.obtainMessage();
//发出消息 给创建的这个myhand
msg.sendToTarget();
//myhand.sendMessage(msg);

}

class myhandler extends Handler{
public myhandler(){

}
//调用父类的构造函数接受looper作为参数
public myhandler(Looper looper){
super(looper);
}
//接受到消息后执行handlerMessage
@Override
public void handleMessage(Message msg){
System.out.println("asd");
System.out.println(Thread.currentThread().getId());

}
}


这样 handleMessage()方法中的内容就不会在主线程中运行

通过调用HandlerThread就可以让一些耗时的操作能够在另外一个线程中执行 从而不会影响Activity中的操作 使得应用程序不会出现卡死等情况

特别注意的是handleMessage()方法必须是继承自父类(即@override) 如果是自己写的 则不会接收到消息
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: