Android中的Handler01
//首先在XML文件中配置一下<TextViewandroid:id="@+id/textViewId"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="数据"/><Buttonandroid:id="@+id/butid"android:layout_width="match_parent"android:layout_height="wrap_content"android:text="发送消息"android:layout_below="@id/textViewId"/>
接下来重点是MainActivity中的代码段
publicclassMainActivityextendsActivity{privateButtonbut;privateTextViewtextview;privateHandlerhandler;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);but=(Button)findViewById(R.id.butid);textview=(TextView)findViewById(R.id.textViewId);but.setOnClickListener(newButList());handler=newMyHandler();}classButListimplementsOnClickListener{@OverridepublicvoidonClick(Viewv){NetWorkThreadnet=newNetWorkThread();net.start();}}classMyHandlerextendsHandler{@OverridepublicvoidhandleMessage(Messagemsg){//Toast.makeText(getApplicationContext(),Thread.currentThread().getName(),Toast.LENGTH_LONG).show();Strings=(String)msg.obj;textview.setText(s);}}classNetWorkThreadextendsThread{@Overridepublicvoidrun(){//模拟访问网络,所以当线程运行时,首先休眠2秒钟//Toast.makeText(getApplicationContext(),Thread.currentThread().getName(),Toast.LENGTH_LONG).show();//得到当前线程的名字try{Thread.sleep(2000);}catch(InterruptedExceptione){e.printStackTrace();}//模拟的数据Strings="从网络当中获取的数据";//textview.setText(s);这样做是错误的,因为Android系统中,只有在MainThread中才能操作UIMessagemsg=handler.obtainMessage();msg.obj=s;handler.sendMessage(msg);}}
这仅仅是模拟Handler的小Demo,仅供自己学习使用。谢谢大家。
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。