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>


更多相关文章

  1. Android:手把手教你如何优雅的实现APP启动速度优化
  2. Android(安卓)中设计模式
  3. Android电话系统之RIL-Java
  4. Android(安卓)消息机制
  5. [Android进阶]Binder学习(初始篇)
  6. Android序列化之Parcel
  7. Android——使用AIDL实现进程间传递对象案例
  8. Android(安卓)四大组件的工作过程
  9. [置顶] android-async-http框架库使用基础

随机推荐

  1. Android框架排行榜,上百项资源汇总不容错
  2. Android(安卓)自定义SurfaceView详解
  3. Android(安卓)6.0动态权限及跳转GPS设置
  4. Android(安卓)架构组件 —— Lifecycle-a
  5. 内存泄漏优化---Bitmap优化
  6. Android(安卓)Databinding:再见Presenter
  7. [置顶] Android(安卓)OpenGL ES 开发教程
  8. ubuntu16.04 + Qt5.13 搭建安卓开发环境
  9. Android重写View并且自定义属性(二)
  10. Android安卓开发 弹性布局(复制即用)