UI线程处理Handle
android的UI是不可以在子线程中更新,因为子线程涉及到UI更新,,Android主线程是线程不安全的,也就是说更新UI只能在主线程中更新,但是在主线程中更新如果更新超过5秒钟,android系统就会收到android系统的一个错误提示"强制关闭",这个时候Handle就出来了,由于Handler运行在主线程中(UI线程中), 它与子线程可以通过Message对象来传递数据, 这个时候,Handler就承担着接受子线程传过来的(子线程用sedMessage()方法传弟)Message对象,(里面包含数据) , 把这些消息放入主线程队列中,配合主线程进行更新UI。
/*MainActivity文件*/importandroid.content.DialogInterface;importandroid.os.Handler;importandroid.os.Message;importandroid.support.v7.app.ActionBarActivity;importandroid.os.Bundle;importandroid.util.Log;importandroid.view.Menu;importandroid.view.MenuItem;importandroid.view.View;importandroid.widget.Button;importandroid.widget.TextView;importjava.util.logging.LogRecord;publicclassMainActivityextendsActionBarActivityimplementsView.OnClickListener{publicButtonbutton_1;publicTextViewtext;privatestaticfinalintUPDATE=1;privateHandlerhandler=newHandler(){@OverridepublicvoidhandleMessage(Messagemsg){super.handleMessage(msg);if(msg.what==UPDATE){Log.d("msg.obj:",String.valueOf(msg.obj));text.setText(String.valueOf(msg.obj));}}};@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);button_1=(Button)findViewById(R.id.button_1);text=(TextView)findViewById(R.id.text_1);button_1.setOnClickListener(this);}@OverridepublicvoidonClick(Viewv){newThread(newRunnable(){@Overridepublicvoidrun(){Messagemessage=newMessage();message.what=UPDATE;message.obj="handler处理有效果";handler.sendMessage(message);}}).start();}}/*布局文件activity_main*/
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"tools:context=".MainActivity"android:orientation="vertical"><TextViewandroid:id="@+id/text_1"android:text="没处理过的handler"android:layout_width="wrap_content"android:layout_height="wrap_content"/><Buttonandroid:id="@+id/button_1"android:layout_width="wrap_content"android:layout_height="wrap_content"android:text="OnClick"/></LinearLayout>
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。