android Handler 消息传递机制
Android的消息传递机制是另一种形式的“事件处理”,这种机制主要为了解决Android应用的多线程问题——Android不允许activity新启动的现成访问改activity里的界面组件,这样就会减少新启动的线程无法动态的改变界面组件的属性值,但实际Android应用开发中,尤其是涉及动画的游戏开发中,需要让新启动的线程周期性的改变界面组件的属性值,这就需要Handler的消息传递机制来实现。
Handler类的主要作用有两个
1、在新启动的线程中发送消息
2、在主线程中获取,处理消息
视频教程地址:http://v.youku.com/v_show/id_XNzM3NDI2OTY4.html
接下来就是简单的Handler消息传递机制的Demo
布局代码就不需要给出来了
packagecom.example.handler;importandroid.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.app.Activity;importandroid.view.Menu;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;importandroid.widget.TextView;publicclassMainActivityextendsActivity{privateButtonbtn_show;privateTextViewtv_show;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);btn_show=(Button)findViewById(R.id.btn_show);tv_show=(TextView)findViewById(R.id.tv_show);btn_show.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewarg0){thread.start();}});System.out.println("主线程---->"+Thread.currentThread().getName());}privateHandlerhandler=newHandler(){@OverridepublicvoidhandleMessage(Messagemsg){super.handleMessage(msg);if(msg.what==5){tv_show.setText("已接收到子线程中出来的额消息");}}};privateThreadthread=newThread(){@Overridepublicvoidrun(){super.run();try{thread.sleep(3000);}catch(InterruptedExceptione){e.printStackTrace();}Messagemsg=handler.obtainMessage();msg.what=5;System.out.println("子线程---->"+thread.currentThread().getName());handler.sendMessage(msg);}};@OverridepublicbooleanonCreateOptionsMenu(Menumenu){//Inflatethemenu;thisaddsitemstotheactionbarifitispresent.getMenuInflater().inflate(R.menu.main,menu);returntrue;}}
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。